[[Vorlage(getestet, general)]] [[Vorlage(Fortgeschritten)]] Das Skript sendet [:Cron: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: {{{#!code */15 * * * * /pfad/zum/skript.sh hostname email@adresse.de }}} am Besten bearbeitet man diese Datei mit: {{{#!vorlage Befehl sudo crontab -e }}} Oder es wird die mit der gleichen Zeile per {{{#!vorlage Befehl 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 = {{{#!code bash #!/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 }}} # tag: Programmierung, Shell