| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
gast Gast
|
Verfasst am: 29. Sep 2012 23:25 Titel: interaktive Nachricht an entfernten Gnome Shell User senden? |
|
|
Liebes Forum,
bitte helft mir bei folgendem Problem:
Ich habe einen Server, welcher unter CentOS 6.2 läuft.
Dieser sichert einige Clients die unter Fedora 17 mit Gnome 3.4 laufen.
Nachdem das Backup fertig ist löst der Server auf den Clients mittels ssh einen shutdown -h +15 aus.
Bis daher funktioniert auch alles perfekt.
Nur mitunter sitzt noch ein User auf einem der Clients.
In diesem Fall hätte ich gerne, das der User ein PopUp eventuell über zenity bekommt, welches ihm die Möglichkeit gibt
den shutdown so er antwortet um eine Stunde zu verschieben und dann wieder fragen.
Sollte der User nicht innerhalb von 15 Minuten antworten soll der shutdown jedoch durchgeführt werden.
Mein größtes Problem dabei ist, dass alle meine Test die ich lokal am Client gemacht habe zumindest ein PopUp produzieren, das PopUp
jedoch wenn ich das Script, welches am Client liegt, über ssh auslöse am Server erscheint und nicht am Client.
Derzeit habe ich zum Testen am Client folgendes Script:
| Code: | #!/bin/sh
sudo -u user -i export DISPLAY=:0; notify-send -i info -t 0 "Info" "Das System wird in 15 Minuten heruntergefahren"
sudo -u user -i export DISPLAY=:0; zenity --question --text="Soll das System in 15 Minuten heruntergefahren werden?"
shutdown -h +15
|
Das notify-send bewirkt eine Nachricht im unteren Bildschirmbereich.
Der zenity Zeile fehlt noch jede Logik, wobei ich auch hier über Input erfreut währe.
Danke schon einmal im Voraus. |
|
| |
|
|
Janka

Anmeldungsdatum: 11.02.2006 Beiträge: 3273
|
Verfasst am: 30. Sep 2012 12:22 Titel: Re: interaktive Nachricht an entfernten Gnome Shell User senden? |
|
|
| gast hat folgendes geschrieben:: |
Mein größtes Problem dabei ist, dass alle meine Test die ich lokal am Client gemacht habe zumindest ein PopUp produzieren, das PopUp
jedoch wenn ich das Script, welches am Client liegt, über ssh auslöse am Server erscheint und nicht am Client.
|
Ich vermute, du benutzt ssh -X? Dann ist das normal: Programme werden auf einem fremden Rechner ausgeführt, aber das Display auf den Rechner umgeleitet, auf dem ssh -X gestartet wurde. So will man das ja bei ssh -X gerade haben.
Du willst stattdessen eine normale ssh-Sitzung benutzen und dem aufrufenden Benutzer auf dem Zielrechner die Berechtigung geben, Fenster auf dem lokalen Display zu öffnen. Dazu musst du in deinem Skript mittels xauth den MIT-MAGIC-COOKIE des Benutzers importieren, dem gerade das Display gehört und die DISPLAY-Variable auf :0 setzen.
| Code: |
# su DISPLAYUSER -c "xauth extract - :0" | xauth merge -
# export DISPLAY=:0
# xterm
|
Janka _________________ Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie. |
|
| |
|
|
gast Gast
|
Verfasst am: 30. Sep 2012 14:30 Titel: Re: Re: interaktive Nachricht an entfernten Gnome Shell User senden? |
|
|
Danke für Deine Antwort.
Du hast recht, in meinen Versuchen verwendete ich ssh -X.
Ich habe Deinen Code am Client als /root/bin/send_shutdown_message.sh abgelegt.
| Code: | #!/bin/sh
su user -c "xauth extract - :0" | xauth merge -
export DISPLAY=:0
xterm
|
Wenn ich das Script am Server als root
aufrufe erhalte ich am Server folgende Fehlermeldung anstatt ein xterm am Client:
| Code: | [root@server]# ssh root@client /root/bin/send_shutdown_message.sh
No matches found, authority file "-" not written
xauth: (argv):1: unable to read any entries from file "(stdin)"
No protocol specified
Warning: This program is an suid-root program or is being run by the root user.
The full text of the error or warning message cannot be safely formatted
in this environment. You may get a more descriptive message by running the
program as a non-root user or by removing the suid bit on the executable.
xterm: Xt error: Can't open display: %s
[root@server]# |
gast |
|
| |
|
|
Janka

Anmeldungsdatum: 11.02.2006 Beiträge: 3273
|
Verfasst am: 30. Sep 2012 22:18 Titel: |
|
|
No matches found, authority file "-" not written bedeutet, dass xauth extract keinen passenden Cookie für :0 gefunden hat. Gibt es dieses Display auf der Zielmaschine überhaupt? Ist "user" der Benutzer, dem das Display gehört?
Janka _________________ Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie. |
|
| |
|
|
gast Gast
|
Verfasst am: 05. Okt 2012 22:35 Titel: |
|
|
Den user "user" gibt es auf der Zielmaschine und er ist auch mittels Gnome eingestiegen.
Daher gehe ich davon aus das es das Display auch gibt.
Eventuell verstehe ich auch etwas falsch.
Wenn ich am Client, also dort wo der user "user" eingestiegen ist folgendes eingebe erhalte ich:
| Code: | [user@client ~]$ export|grep -i display
declare -x DISPLAY=":0" |
mache ich dasselbe über ssh erhalte ich:
| Code: | ssh user@client
[user@client ~]$ export|grep -i display
|
Also kein DISPLAY aus der Ferne jedoch sehr wohl lokal.
Aber wie gesagt, vielleicht verstehe ich auch etwas falsch.
Jedenfalls Danke für Deine Antwort.
gast |
|
| |
|
|
Janka

Anmeldungsdatum: 11.02.2006 Beiträge: 3273
|
Verfasst am: 06. Okt 2012 11:14 Titel: |
|
|
Dann setze das Display, bevor du xauth extract durchführst.
Janka _________________ Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie. |
|
| |
|
|
gast Gast
|
Verfasst am: 06. Okt 2012 19:18 Titel: |
|
|
auch wenn ich
| Code: | su user -c "DISPLAY=:0; export DISPLAY; xauth extract - :0" | xauth merge -
export DISPLAY=:0
xterm
|
im Script am Client welches ich als root am Server durchführe erhalte ich die selbe Fehlermeldung.
DISPLAY=":0" ist nur exportiert wenn ich lokal am Client einsteige.
Auch ein xauth list über ssh zeigt kein DISPLAY=:0 sondern nur welche ab :10
Es ist dabei egal ob ich vom Server per ssh als user oder als root am Client einsteige.
Ich bin jedenfalls schon am verzweifeln.
gast |
|
| |
|
|
hastifranki

Anmeldungsdatum: 06.05.2006 Beiträge: 220
|
Verfasst am: 07. Okt 2012 13:02 Titel: |
|
|
Hallo,
um zu prüfen, ob es prinzipiell funktioniert, habe ich mal folgendes getestet:
In einem Terminal auf dem Server habe ich
xhost +
ausgeführt.
Danach habe ich im Terminal auf dem Client
ssh frank@server.local
und anschließend
xterm -display :0
eingegeben. Das Fenster erschien auf dem Server.
Ich weiß, dass man xhost vergessen sollte. Vielleicht kann man sich aber so an die Lösung des Problems heran tasten.
(Server und Client habe ich aus ssh-Sicht betrachtet.)
Viele Grüße
Frank |
|
| |
|
|
gast Gast
|
Verfasst am: 07. Okt 2012 13:58 Titel: |
|
|
Danke für die Antwort.
Ich habe dass mal schnell probiert und es hat funktioniert.
In wie weit ich diese Methode für mein ursprüngliches Problem nutzen kann muss
ich erst ausprobieren.
Danke
gast |
|
| |
|
|
hastifranki

Anmeldungsdatum: 06.05.2006 Beiträge: 220
|
Verfasst am: 07. Okt 2012 15:18 Titel: |
|
|
Nach der Anmeldung ssh frank@server.local funktioniert auch folgendes Skript bei mir:
| Code: | #!/bin/bash
export XAUTHORITY=/var/run/gdm3/auth-for-frank-XXXXXX/database
xauth extract cookie :0
xauth merge cookie
xterm -display :0 |
XXXXXX muss immer neu gesetzt werden.
Bei mir läuft Debian Squeeze auf den Rechnern.
Viele Grüße
Frank |
|
| |
|
|
gast Gast
|
Verfasst am: 07. Okt 2012 15:31 Titel: |
|
|
Danke
ich werde auch diese Anregung probieren und dem Forum Rückmeldung geben.
gast |
|
| |
|
|
gast Gast
|
Verfasst am: 07. Okt 2012 19:16 Titel: |
|
|
Mit obiger Methode erhalte ich folgende Fehlermeldungen:
(Dein Script habe ich als /root/bin/xmsg abgelegt.)
| Code: | [root@server ~]# ssh client
Last login: Sun Oct 7 20:11:17 2012 from server
[root@client ~]# cd bin
[root@client]# cat ./xmsg
#!/bin/bash
export XAUTHORITY=/var/run/gdm/auth-for-user-rycXrS/database
xauth extract cookie :0
xauth merge cookie
xterm -display :0
[root@client bin]# ./xmsg
xauth: (argv):1: extract: unable to open file cookie
xauth: (argv):1: unable to open extraction file "cookie"
No matches found, authority file "cookie" not written
xauth: (argv):1: merge: unable to open file cookie
|
"auth-for-frank-XXXXXX" habe ich an meine Verhältnisse angepasst.
Die Datei /var/run/gdm/auth-for-user-rycXrS/database ist vorhanden
Hat jemand von euch eine leicht verständliche Anleitung zu X im allgemeinen?
Ich verwende auf meinen Servern keine Grafikoberfläche und auf meinem administrativem
Client zwar Gnome jedoch in der Regel nur zum öffnen von Terminals bzw. mit unter
zum Aufruf diverser Admin Tools durch Webbrowser.
gast |
|
| |
|
|
hastifranki

Anmeldungsdatum: 06.05.2006 Beiträge: 220
|
Verfasst am: 08. Okt 2012 6:59 Titel: |
|
|
Hallo,
wie schon oben beschrieben, habe ich mich wie folgt angemeldet: frank@server.local
Das Script habe ich unter ~ abgelegt und und als normaler user ausgeführt. (Ich habe mich nicht als root angemeldet und das Script nicht als root ausgeführt.)
Da bei dir auth-for-user- steht, solltest du das Script auch als user ausführen.
Viele Grüße
Frank |
|
| |
|
|
gast Gast
|
Verfasst am: 11. Okt 2012 22:50 Titel: |
|
|
Danke
ich werde auch diese Anregung am Wochenende probieren und dem Forum Rückmeldung geben.
gast |
|
| |
|
|
Blesow
Anmeldungsdatum: 19.12.2012 Beiträge: 2
|
Verfasst am: 19. Dez 2012 13:18 Titel: |
|
|
| hastifranki hat folgendes geschrieben:: | Hallo,
wie schon oben beschrieben, habe ich mich wie folgt angemeldet: frank@server.local
Das Script habe ich unter ~ abgelegt und und als normaler user ausgeführt. (Ich habe mich nicht als root angemeldet und das Script nicht als root ausgeführt.)
Da bei dir auth-for-user- steht, solltest du das Script auch als user ausführen.
Viele Grüße
Frank |
So ist es. Je nachdem, unter welcher Kategorie man das Script einrichtet, muss man sich auch unter der entsprechenden Kategorie anmelden: root, user, usw. usf. |
|
| |
|
|
|