【问题标题】:notify-send doesn't work over SSHnotify-send 不能通过 SSH 工作
【发布时间】:2021-03-04 21:04:57
【问题描述】:

我想使用 PC A 通过 SSH 向 PC B 发送通知,但我在 B 上没有看到通知。

ssh user_name@B_ip 'notify-send hello'

我也试过这个:在B上使用SSH登录A,然后再登录B,然后发送通知。但是它仍然没有工作。 B也没有看到通知。

【问题讨论】:

  • 尝试使用mail user < /dev/null 代替notify-send 获取本地邮件。
  • DISPLAY=:0.0 notify send… 工作吗?
  • @pacholik 哇,它有效!

标签: shell ssh notify-send


【解决方案1】:

你必须设置 DISPLAY 变量

DISPLAY=:0.0 notify-send hello

有关此变量的一些信息,请参阅this

【讨论】:

    【解决方案2】:

    通知通过 dbus(用户会话)发送。您需要通过 SSH 建立 dbus 套接字,以便在另一台计算机上运行的程序可以向您的桌面发送通知。

    工作流程是:

    1. 将 dbus 套接字公开到本地 TCP 端口(仅可从 localhost 获得)
    2. 在远程机器上反向隧道此本地 TCP 端口(使用 SSH)
    3. 在远程机器上,将此 TCP 端口公开为抽象套接字
    4. 告诉 notify-send 连接哪个 dbus 会话(创建的抽象套接字)

    @local 代表你的桌面,@remote 代表你 ssh 到的机器。

    1. 将本地端口 :7272 转发到 dbus 抽象套接字(guid 将在后面使用)
    @local $ echo $DBUS_SESSION_BUS_ADDRESS
    unix:abstract=/tmp/dbus-pH1JnDeLNA,guid=5fe0907d81e722390f1ce02d6033ad76
    @local $ socat TCP-LISTEN:7272,reuseaddr,fork ABSTRACT-CONNECT:/tmp/dbus-pH1JnDeLNA
    
    1. 从远程主机恢复转发端口 7272(替换 $REMOTE_HOSTNAME)
    @local $ ssh -R localhost:7272:localhost:7272 $REMOTE_HOSTNAME
    
    1. 将抽象套接字转发到 localhost:7272
    @remote $ socat ABSTRACT-LISTEN:/tmp/custom_dbus_name,fork TCP:localhost:7272
    
    1. 启动通知发送
    @remote $ export DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/custom_dbus_name,guid=5fe0907d81e722390f1ce02d6033ad76'
    @remote $ notify-send "Hello, World"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多