Benachrichtigung als Root für andere Benutzer in KDE anzeigen

856
Mustafa Orkun Acar

Ich muss Benachrichtigungsnachrichten als Root auf einem Debian-System anzeigen, auf dem KDE mit einem Bash- oder Python-Skript ausgeführt wird. Was ich bisher ausprobiert habe, sind:

export DISPLAY=:X (X symbolizes the remote host data) export XAUTHORITY=~$USERNAME/.Xauthority zenity --warning --title $TITLE --text " $TEXT 

Diese Befehle machen, was ich will, aber nur über das Terminal. Wenn ich versuche, sie in einem Python-Skript (mithilfe von os.system () oder subprocess.call ()) zu verwenden, oder versuche, ein Shell-Skript auszuführen; Es schlägt fehl (In der Regel wird dem Benutzer die Benachrichtigung angezeigt, dass ich mich angemeldet habe, nicht beim Zielbenutzer. Außerdem führt dies manchmal zu Fehlern:

Could not open X display  No protocol specified  Gtk-WARNING **: cannot open display: :X.  XDG_RUNTIME_DIR not set in the environment. 

Es zeigt aber auch selten die Benachrichtigung an den richtigen Benutzer. Daher konnte ich nicht verstehen, wie es sich verhält.)

Ich habe auch gelesen, dass Zenity für KDE nicht gut ist, vielmehr wird Kdialog bevorzugt.

kdialog --title "some title" --passivepopup "some text" 5 & (number for the time-out) 

Bei Verwendung des obigen Befehls mit gksu und su ist kein Erfolg mehr möglich. Ich habe es auch mit pynotify versucht. Ich denke, das Problem betrifft nicht die Art und Weise, wie ich die Benachrichtigungsnachricht erstelle, sondern dem Benutzer direkter zeigen, eine Verbindung zum X Server herzustellen oder benutzerspezifische X Server-Einstellungen zu übertragen.

Ich brauche an dieser Stelle Hilfe. Jeder Vorschlag wird geschätzt.

1

1 Antwort auf die Frage

1
Mustafa Orkun Acar

Obwohl ich immer noch nicht weiß, was das genaue Problem mit dem oben genannten Ansatz ist, habe ich endlich eine Lösung gefunden, die für meinen Fall gut funktioniert.

cat /home/remote-user/.Xauthority | xauth merge - #merge the Xauth information of user DISPLAY=:X kdialog --title 'some title' --sorry 'some_message' (X symbolizes the remote host data)