設定 DISPLAY=:0 對透過 ssh 發送通知沒有影響

設定 DISPLAY=:0 對透過 ssh 發送通知沒有影響

我可以透過 ssh 存取我室友的電腦(Ubuntu 14.04)。我想透過 ssh 向她發送訊息,因此我使用這個命令

export DISPLAY=:0 && notify-send "sample message"

該命令以 0 退出,但她沒有看到任何訊息。另一方面,當我使用匯出顯示=:0和例如xterm,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您的特定使用者/機器。

相關內容