kostenloser Webspace werbefrei: lima-city


Bash-Skript: Watchdog zur Host Überwachung

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    fourflames

    fourflames hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. fleischhoernchen

    Kostenloser Webspace von fleischhoernchen

    fleischhoernchen hat kostenlosen Webspace.

    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
  4. Autor dieses Themas

    fourflames

    fourflames hat kostenlosen Webspace.

    Besten Dank dir für dieses Skript!

    Ich werde es ausprobieren und melde mich in Kürze.

    Gruß, ff
  5. fleischhoernchen

    Kostenloser Webspace von fleischhoernchen

    fleischhoernchen hat kostenlosen Webspace.

    fourflames schrieb:
    Besten Dank dir für dieses Skript!

    Ich werde es ausprobieren und melde mich in Kürze.

    Gruß, ff

    Viel Spaß damit.
  6. Autor dieses Themas

    fourflames

    fourflames hat kostenlosen Webspace.

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

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    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 $?
  8. Autor dieses Themas

    fourflames

    fourflames hat kostenlosen Webspace.

    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.
  9. fleischhoernchen

    Kostenloser Webspace von fleischhoernchen

    fleischhoernchen hat kostenlosen Webspace.

    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
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!