Netz weg?

  • Urspruenglicher Autor: Ramon Kukla
  • Urspruengliches Datum: 07.01.2011

Vor einigen Tagen hab ich beim Surfen eine Seite mit einem kleinen Script gefunden. Hintergrund des Scriptes war, dass ein Server manchmal die Netzwerkverbindung verloren hatte und daher das Interface einmal runter und dann wieder rauf gefahren werden musste. An dem Script waren mir zwei Dinge ins Auge gefallen, die ich anders gemacht haette. Zum einen wurde fuer die Pruefung versucht google.de anzupingen und zum anderen fehlte eine Protokollierung. Ich habe ueberlegt wie ich die Aufgabe loesen wuerde und bin zu nachfolgendem Resultat gekommen.

#!/bin/bash
#
# checks if the default gateway is reachable
#
if ping -c 1 -w 1 $(route -n | grep UG.*eth0 | awk {'print $2'})>/dev/null; then
    logger -t chknet.sh -i "Network is up"
else
    logger -t chknet.sh -i "Network is down. Please do something."
fi

Der Grund warum ich keinen klassischen Host anpingen wuerde ist, dass das gewuenschte Ziel auch mal nicht erreichbar sein kann. Daher wuerde ich persoenlich versuchen die Erreichbarkeit ueber das Gateway zu pruefen. Das Ermitteln der Gatewayadresse ist, wie so oft unter Linux/UNIX, ueber viele Wege moeglich. Neben der oben verwendeten Abfrage haette man auch gleich die Gatewayadresse ins Script eintragen koennen. Oder man geht den Weg ueber /proc/net/route um dort die Gatewayadresse „byte-reversed hexadecimal“ auszulesen.

Viel interessanter ist eine verwertbare Rueckmeldung. Wenn ich ein Script nutze, dass hier und da eine Rueckmeldung gibt, so moechte ich das auch spaeter noch nachlesen koennen. Neben dem Einsatz eines eigenen Logs ist logger eine prima Option. Hiermit werden definierte Meldungen ins Syslog geschrieben. Zum Thema Logging wird es in naechster Zeit sicher auch noch einen Beitrag geben :)

Dirk hatte mir schon die ein oder andere „Optimierung“ vorgeschlagen. Wie wuerde eure Loesung aussehen?

Zurück zur Uebersicht