Ping-alive
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Das Skript sendet Cronjob-gesteuert einen Ping an einen definierten Host. Wenn dieser nicht antwortet, wird eine Warnmail verschickt. Nachdem der Host wieder online ist, gibt es eine Entwarnung per Email. Die Warnmail wird nur einmal in 12 Stunden geschickt.
Das Skript benötigt das Programm mailx und natürlich einen MTA (postfix ist bei Ubuntu standardmäßig installiert), damit dieser die Mails verschicken kann.
Vorbereitungen¶
In /etc/crontab wird folgendes eingetragen:
1 | */15 * * * * /pfad/zum/skript.sh hostname email@adresse.de |
am Besten bearbeitet man diese Datei mit:
sudo crontab -e
Oder es wird die mit der gleichen Zeile per
crontab -e
das Skript als benutzerspezifischer Cronjob eingetragen. Das Skript arbeitet dann nur, wenn der Benutzer angemeldet ist.
Das Skript prüft nun alle 15 Minuten die Erreichbarkeit des angegebenen Hosts. Sollen mehrere Hosts geprüft werden, so muss für jeden Host ein eigener Eintrag in der /etc/crontab erfolgen.
Skript¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #!/bin/bash # a² - aquadraht@notmail.org 25.05.2005 # minimaler update - maba@freeshell.de 06.08.2015 # prüft erreichbarkeit und verschickt im fehlerfall eine mail # syntax: checkhost.sh host recipient #set -xv TMPDIR=/tmp FILE=ping-alarm-$1 FLAG=$TMPDIR/$FILE # check, ob FLAG älter als 12h if [ -f $FLAG ] then find $TMPDIR -name $FILE -mmin +720 -exec rm -f {} \; fi if [ ! -f $FLAG ] then ping -c 1 "$1" > /dev/null 2>&1 else ping -c 1 "$1" > /dev/null 2>&1 if [ "$?" = "0" ] then cat << EOF | mailx -s "UFF! $1 is UP again!!" $2 $1 is up!!!! `date` EOF cd /tmp rm $FLAG fi fi # verschicke Mail, wenn Host nicht erreichbar if [ "$?" != "0" ] then cat << EOF | mailx -s "AARGH! $1 is DOWN!!" $2 $1 is down!!!! `date` EOF cd /tmp touch $FLAG fi |