Das Setzen von DISPLAY=:0 hat keine Auswirkung auf das Senden von Benachrichtigungen über SSH

Das Setzen von DISPLAY=:0 hat keine Auswirkung auf das Senden von Benachrichtigungen über SSH

Ich habe per SSH Zugriff auf den Computer meiner Mitbewohnerin (Ubuntu 14.04). Ich möchte ihr eine Nachricht per SSH schicken, dazu verwende ich diesen Befehl

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

Der Befehl wird mit 0 beendet, aber sie sieht keine Nachricht. Andererseits, wenn ich benutzeexport DISPLAY=:0und zBxterm, das xterm wird normal geöffnet. libnotifyist installiert, wenn ich laufeBenachrichtigen-Sendenlokal wird es angezeigt. Auch wenn ich diesen Befehl über SSH auf einem anderen Computer versuche, funktioniert es.

Irgendwelche Ideen, warum das passiert, bitte? Danke

Antwort1

notify-send benötigt Sitzungsdaten, um Benachrichtigungen innerhalb der Sitzung Ihrer Freunde senden zu können. Diese werden in Umgebungsvariablen gespeichert, die bei der Anmeldung in eine Sitzung einbezogen werden. Dies verhindert, dass unerwünschte Hintergrundprozesse Ihren Desktop durcheinanderbringen.

Eine einfache Möglichkeit, diese Sitzungsanmeldeinformationen verfügbar zu machen (und die Sicherheit des Desktops vollständig zu untergraben), besteht darin, die Desktopsitzung eine Bildschirmsitzung starten zu lassen und diese dann in den Hintergrund zu stellen.

Sie können dann per SSH darauf zugreifen, eine Verbindung zur Bildschirmsitzung herstellen und dann funktioniert Ihr Benachrichtigungsversand. Wenn Sie dies tun, stellen Sie sicher, dass Ihre Mitbewohnerin sich darüber im Klaren ist, dass Sie vollständigen Zugriff auf ihren Desktop und ihre Dateien haben.

So konfigurieren Sie die Bildschirmsitzung:

Führen Sie im Dashboard „Startup Applications“ aus.

Klicken Sie auf „Hinzufügen“, geben Sie ihm einen Namen und geben Sie Folgendes in den Befehl ein:

screen -dmS desktop_session

Wenn Sie sich dann über SSH verbinden

screen -r desktop_session
notify-send "Insecure message"

Sie können dann einen beliebigen Befehl ausführen und seine grafische Ausgabe in dieser Desktopsitzung anzeigen lassen.

Sie müssen dies interaktiv tun. Wenn Sie es nicht-interaktiv tun möchten, können Sie ein Shell-Skript eine Datei abfragen lassen und, wenn es Daten hat, diese zur Benachrichtigung senden. Oder verwenden Sie einfach einen Instant-Messaging-Client.

Antwort2

Ich musste etwas Ähnliches tun - ich wollte ein Update auf einem Computer ausführen, wollte aber eine Benachrichtigung an einen anderen Computer senden. Ich habe Folgendes verwendet sshpass:

sshpass -p user_password ssh -X user_name@ip_address DISPLAY=:0 notify-send "The message"

wo Sie ersetzen würden user_password, user_nameund ip_addressfür Ihren spezifischen Benutzer/Computer.

verwandte Informationen