我可以通过 ssh 访问我室友的电脑(Ubuntu 14.04)。我想通过 ssh 给她发一条消息,因此我使用这个命令
export DISPLAY=:0 && notify-send "sample message"
命令以 0 退出,但她看不到任何消息。另一方面,当我使用导出显示=:0例如终端,xterm 正常打开。 通知库已安装,当我运行时通知发送在本地,它会显示。此外,当我在另一台计算机上通过 ssh 尝试此命令时,它也能正常工作。
大家有什么想法吗?为什么会发生这种情况?谢谢
答案1
通知发送需要有会话凭证才能在您的朋友会话中发送通知。这些凭证存储在您登录时包含在会话中的环境变量中,这可防止恶意后台进程弄乱您的桌面。
使这些会话凭据可用(并完全破坏桌面的安全性)的简单方法是让桌面会话启动屏幕会话然后将其置于后台。
然后,您可以通过 ssh 连接到它,连接到屏幕会话,然后您的通知发送将起作用。如果您这样做,请确保您的室友完全知道您完全有权访问她的桌面和文件。
要配置屏幕会话:
从仪表板运行“启动应用程序”
单击添加,为其命名并在命令中输入以下命令:
screen -dmS desktop_session
然后当你通过 ssh 连接时
screen -r desktop_session
notify-send "Insecure message"
然后您可以运行任何命令并让其图形输出出现在该桌面会话中。
您将需要以交互方式执行此操作,如果您想以非交互方式执行此操作,您可以使用 shell 脚本轮询一个文件,当它有数据时将其发送到通知。或者只是使用即时消息客户端。
答案2
我必须做类似的事情 - 我在一台计算机上运行更新,但想在另一台计算机上发送通知。我使用了sshpass
:
sshpass -p user_password ssh -X user_name@ip_address DISPLAY=:0 notify-send "The message"
其中,您需要替换user_password
,user_name
并ip_address
针对您的特定用户/机器。