DISPLAY Variable

O

OliverFfm

Mitglied
Hallo allerseits,

ich bin ganz neu hier. Habe ein großes Problem, bei dem ich nicht weiter komme. Ich habe noch nicht so viel Erfahrung in Shell-Script Programmierung.

Ich benutze die bash Shell Version 3.0

Ich habe folgendes Problem. Ich arbeite mit nagios einem Netzwerkmonitoring Tool.
Dafür habe ich 2 Scripte selbst geschrieben.

Einen Eventhandler und ein Init-Script.

Das Init-Script ist für das Starten, Stoppen und Restarten von Firefox zuständig. Es funktioniert auch ohne Probleme, wenn ich es manuell aufrufe.

Der Eventhandler hat die Aufgabe Firefox neu zu starten, wenn der Prozess Firefox-bin abgestürzt ist. Ich habe alle Schritte in eine Log-Datei schreiben lassen.
Sobald der eventhandler aufgerufen wird, da kein Prozess für Firefox läuft, startet er das Init-Script. Laut Log finktioniert das auch wunderbar. Das Initscript führt ein restart aus. Zuerst beendet er Firefox (falls noch Prozesszombies existend sind) und dann startet er den Firefox neu.
Das Problem ist folgendes. Durch den Eventhandler kennt er die lokale Displayvariable nicht. Das hat er mir im Log aufgezeichnet. Ich habe die Variable in das Init-Script reingeschrieben. Fehler-Log ist weg, der Log zeigt an, dass Firefox gestartet wird, aber es passiert nichts.

Kennt sich jemand damit aus.

Erstmal mein Initscript

#!/bin/sh
#
# Author: Oliver Kirsch
#
# /usr/local/nagios/libexec/init.d/firefox
#
# and its symbolic link
#
# /usr/bin/firefox
#
### BEGIN INIT INFO
# Provides: firefox
# Required-Start: $local_fs $remote_fs $network
# Description: Browserstart
# This script can be used to start/stop firefox
### END INIT INFO

DISPLAY=localhost:0.0
export DISPLAY && /usr/bin/firefox &

# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status


. /etc/rc.status

rc_reset


case "$1" in
start)
echo "Starting Firefox"
startproc /usr/bin/firefox &
rc_status -v
;;
stop)
echo "Shutdown Firefox"
killproc -TERM firefox-bin
rc_status -v
;;
restart)
echo "Restarting Firefox"
$0 stop
$0 start
rc_status
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
rc_exit


sind die Befehle für das Starten und das Killen die richtigen?


und hier der Log nach dem Aufruf des Eventhandlers


/usr/local/nagios/libexec/eventhandler/restart_firefox.sh CRITICAL SOFT 1
Restarting Firefox
Shutdown Firefox
..done
Starting Firefox
..done
Mon Dec 12 15:51:26 CET 2005
/usr/local/nagios/libexec/eventhandler/restart_firefox.sh CRITICAL SOFT 2
Restarting Firefox
Shutdown Firefox
..done
Starting Firefox
..done


und so sah der Log vor dem setzen der Display Variablen aus

/usr/local/nagios/libexec/eventhandler/restart_firefox.sh CRITICAL SOFT 1
Restarting Firefox
Shutdown Firefox
DISPLAY empty or unusable
DISPLAY=:0.0
..done
Starting Firefox
..done
DISPLAY empty or unusable
DISPLAY=:0.0

Was ist denn hier verkehrt?
Ich danke für eure Hilfe

Gruß Oliver
 
hallo oliver

ich benutze auch nagios und bin auch in unix noch nicht so fit !

suche noch austausch partner

hier meine email

**********

lg

frank
 
Hallo Frank,

ich kann dir gerne helfen. Arbeite seit 3 Monaten jeden Tag mit Linux. In meinem Studium kam ich auch häufiger mit Linux in Berührung. Also Grundwissen habe ich und werde dir bestimmt bei manchen Problemen helfen können. Mit nagios arbeite ich seit 2 Monaten. Bin dort auch im Forum. Die können einem richtig weiterhelfen.

Am besten du schreibst mir bei nagios oder hier eine PM

Emailadresse habe ich dir ja nach Hause geschickt

Gruß Oliver
 
Bisher konnte mir noch keiner bei meinem Problem helfen.

Kann sich rigendjemand bei mir melden, der sich mit den Displayvariablen auskennt. Ich denke da liegt das Problem.
Die Displayvariable kann nicht richtig ausgewertet werden.

Ich weiß nicht mehr weiter

Gruß Oliver
 
@OliverFfm

Wenn ich das richtig verstehe, wird Dein Skript von einem anderen User ausgeführt (wahrscheinlich root). Schau Dir deshalb mal "xhost" an.

@muemmi

Wäre schön, wenn Ihr Eure Probleme hier im Forum lösen würdet, da dann auch andere davon profitieren würden ;)

Gruss, Phorus
 
@Phorus

eigentlich wird das Script vom gleichen User ausgeführt.
Aber wo du nicht ganz unrecht hast, die PATH-Variablen werden von su root genommen (nicht vom Superuser). Ich habe die env des Scripts in einem Log aufzeichnen lassen. Komischerweise ist die Displayvariable auch gesetzt, wenn ich sie nicht explizit im Script deklariere.
Trotzdem schmeißt er den Fehler

DISPLAY empty or unusable
DISPLAY=:0.0

aus.

Irgendwas mag er da garnicht. Ich weiß auch nicht, was es bewirkt, wenn die Werte der variablen geändert werden. Leider habe ich in diesem Bereich kein fundiertes Wissen, wie das genau mit der DISPLAY Variablen ist.

Später allerdings soll wie du es sagst, das Script von einem anderen User ausgeführt werden.

Gruß Oliver.

PS Klar werden wir Probleme im Forum diskutieren
 
Wie schau ich mir xhost an? Ist ne doofe Frage. Aber wo finde ich das? Gebe ich das auf der Kommandozeile ein als User oder root, so habe ich keine Authorisierung. Eine man gibt es nicht.

Bitte um kurze Hilfe

Danke

PS: Kann auch kein Client dem XServer zuordnen
 
OliverFfm schrieb:
Wie schau ich mir xhost an? Ist ne doofe Frage. Aber wo finde ich das? Gebe ich das auf der Kommandozeile ein als User oder root, so habe ich keine Authorisierung. Eine man gibt es nicht.

Bitte um kurze Hilfe

Danke

PS: Kann auch kein Client dem XServer zuordnen

http://www.netadmintools.com/html/xhost.man.html

Ab und an hilft Google auch ;) - Nur so als kleiner Tipp ...

The xhost program is used to add and delete host names or user names to the list allowed to make connections to the X server. In the case of hosts, this provides a rudimentary form of privacy control and security. It is only sufficient for a workstation (single user) environment, although it does limit the worst abuses. Environments which require more sophisticated measures should implement the user-based mechanism or use the hooks in the protocol for passing other authentication data to the server.
 
Habe in google geguckt. Weiß auch für was xhost gut ist. Ich bekomme aber immer den Fehler, dass ich nicht authorisiert bin.

access control enabled, only authorized clients can connect

Ich soll ja was nachschauen in der xhost. Aber wie. jegliche Befehle enden mit dem obigen Satz.
 
Das mit dem xhost finktioniert. Habe den Client hinzugefügt. Aber trotzdem habe ich immer noch das Problem, dass der Firefox nicht startet.
Habe herausgefunden, wenn das tool nagios den Eventhandler startet, dann verwendet er die env von root. Starte ich hingegen manuell den Eventhandler so nutzt er die env von nagios.
Warum er das so macht weiß ich nicht. Da alle Rechte sowie Besitzer und Gruppe bei nagios sind.

Gibt es ne Möglichkeit im Script die env von nagios zu nutzen

Ich finde sonst absolut keinen Fehler
 

Ähnliche Themen

Autostart von X mit google-chrome durch systemd

NagiosGrapher 1.7.1 funktioniert nicht

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Akonadi startet nicht mehr

dovecot und postfix Konfiguration Problem

Zurück
Oben