Mitunter hat man das Problem, eine nicht kleine Anzahl an Rechnern auf Erreichbarkeit zu überprüfen. Die Adressen und Hostnamen liegen als Excel-Liste vor, aber diese alle von Hand zu pingen … dazu bin ich echt zu faul. Also habe ich mir ein kleines Script gebaut, welches diese Aufgabe elegant erledigt:
#!/bin/sh # # Sendet einen Ping an alle in der übergebenen Datei aufgeführten Adressen. # In der Liste muss pro Zeile zuerst die IP-Adresse und danach durch Leerzeichen # getrennt der Hostname stehen (optional). # Die Ausgabe von Ping kann unterdrückt werden, indem STDERR ins Null-Dev # geschickt wird: # ping_list liste.txt 2>/dev/null # #set -x Newline=' ' IFS=$Newline for LINE in `cat $1` do #echo "'$LINE'" ADR=${LINE%% *} HOST=${LINE##* } #echo "Adr: $ADR" #echo "Host: $HOST" if [ "$OSTYPE" = "linux" ] then ping -q -W 3 -c 1 $ADR 1>&2 elif [ "$OSTYPE" = "hpux11.00" ] then ping $ADR -n 1 -m 3 1>&2 else echo "Unknown OS" exit 99 fi if [ $? -eq 0 ] then echo "$ADR ($HOST) is up" else echo "$ADR ($HOST) FAILED" fi done IFS=
Es arbeitet zzt. unter Linux (SuSE 11.1) und HP-UX 11i und kann auch hier heruntergeladen werden:
ping_list
ich würde sagen, dass da ein kleiner Schönheitsfehler vorhanden ist. Wenn das Script auf einem unbekannten OS ausgeführt wird, ist jeder HOST alive.
echo „irgendwas“ liefert immer true zurück, demnach ist [ $? -eq 0 ] nach einem echo immer wahr.
Da hast du natürlich vollkommen Recht. Selbstverständlich muss in so einem Fall die ganze Sache abgebrochen werden.
Ich habe den Quelltext im Artikel und in der Download-Datei entsprechend angepasst.
Vielen Dank für den Hinweis!