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
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