Bash-Skript: Watchdog zur Host Überwachung
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
ausgabe
ausprobieren
bauen
beispiel
code
dienst
einfachsten bordmitteln
erkennen
erreichbarkeit
host
http
jemand
machen
melde
null
paket
port
sinn
tool
verwenden
-
Hallo Leute,
folgendes Szenario stellt sich dar. Die Aufgabe ist, ein sogenanntes Watchdog (Überwachungs-Skript) in der Bash-Shell zu schreiben um einen Host auf seine Netzwerk-Erreichbarkeit zu prüfen und bei Nicht-Erreichbarkeit eine gewisse Aktion auszuführen:
Bspw. wird per "ping" Befehl geprüft ob der Host xyz antwortet.
$? = 0 ist der Host da,
$? = 1 wurde ein Problem festgestellt, führe eine Aktion aus
Hat jemand bereits ein solches Skript geschrieben? Hat hier jemand einen Lösungsansatz?
Vielen Dank euch im Voraus.
ff -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Einfach...
#!/bin/bash ## USAGE: ## sh watchdog.sh example.com http "echo BLAH" host=$1 port=$2 action=$3 nc -w 1 -z $host $port 2> /dev/null if [ $? -ne 0 ] ; then echo $($action) fi
Beitrag zuletzt geändert: 18.4.2011 14:08:02 von fleischhoernchen -
fourflames schrieb:
Besten Dank dir für dieses Skript!
Ich werde es ausprobieren und melde mich in Kürze.
Gruß, ff
Viel Spaß damit. -
Ich hab nun das Skript so übernommen und ein wenig angepasst. Leider kennt die Distro das nc tool nicht.
Anstatt mit nc den Ping zu verwenden macht aber keinen Sinn, weil der Ping, egal ob der Host der angepingt wird erreichbar ist oder nicht, immer mit Exit-Code 0 zurückkommt.
Wie könnte man sowas mit den einfachsten Bordmitteln bauen? Mir schwebt sowas wie mit 'grep' vor, nachdem man die Stdout Ausgabe vom Ping analysiert. -
fourflames schrieb:
Ich hab nun das Skript so übernommen und ein wenig angepasst. Leider kennt die Distro das nc tool nicht.
Welche distri hast du denn? Du kannst mal nach einem Paket namens netcat suchen.
Anstatt mit nc den Ping zu verwenden macht aber keinen Sinn, weil der Ping, egal ob der Host der angepingt wird erreichbar ist oder nicht, immer mit Exit-Code 0 zurückkommt.
Wie könnte man sowas mit den einfachsten Bordmitteln bauen? Mir schwebt sowas wie mit 'grep' vor, nachdem man die Stdout Ausgabe vom Ping analysiert.
Also bei mir Liefert das den Exit-Code 0:
ping -W 1 -c4 127.0.0.1 > /dev/null ; echo $?
und das (IP gibts hier im LAN nicht) eine 1:
ping -W 1 -c4 192.168.115.23 > /dev/null ; echo $?
-
thomasba schrieb:
fourflames schrieb:
Ich hab nun das Skript so übernommen und ein wenig angepasst. Leider kennt die Distro das nc tool nicht.
Welche distri hast du denn? Du kannst mal nach einem Paket namens netcat suchen.
Anstatt mit nc den Ping zu verwenden macht aber keinen Sinn, weil der Ping, egal ob der Host der angepingt wird erreichbar ist oder nicht, immer mit Exit-Code 0 zurückkommt.
Wie könnte man sowas mit den einfachsten Bordmitteln bauen? Mir schwebt sowas wie mit 'grep' vor, nachdem man die Stdout Ausgabe vom Ping analysiert.
Also bei mir Liefert das den Exit-Code 0:
ping -W 1 -c4 127.0.0.1 > /dev/null ; echo $?
und das (IP gibts hier im LAN nicht) eine 1:
ping -W 1 -c4 192.168.115.23 > /dev/null ; echo $?
Okay, das hört sich schon mal gut an, was passiert aber, wenn die IP zwar bekannt ist, aber der host nicht antwortet. Augrund von Störungen usw.
Genau solch einen Fall möchte ich erkennen und abfangen. -
Eine IP ist (bis auf irgendwelche ARP Tabellen) an sich nicht irgendwo "bekannt".
Das Beispiel von Thomas funktioniert also auch, wenn ein Host "nur" offline ist, der eine eigentlich sonst genutzte IP besitzt.
Abgesehen davon ist ein Ping eigentlich keine saubere Lösung, da dies nur heißt, dass der Rechner antwortet, nicht jedoch, dass ein Dienst auch reagiert. Für HTTP wäre beispielsweise mit cURL, grep und oder sed und einer if-Abfrage eine Überprüfung von Inhalten nicht unangebracht.
Für FTP kann man eine Datei hoch- und wieder runterladen usw.
Der Vorteil vom netcat Beispiel ist, dass es immerhin für jeden tcp Dienst ein Connectiontest ist.
Beitrag zuletzt geändert: 21.4.2011 13:56:00 von fleischhoernchen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage