Folgenden Code verwende ich. Läuft auf einer Solaris-Maschine, evt. musst du Pfade anpassen.
In deiner Crontab trägst du ein:
0,15,30,45 * * * * /pfad/zum/script.sh hostname email@adresse.de
Da ich im Fehlerfalle nicht alle 15min eine Mail erhalten möchte, wird ein Flag gesetzt und ich kriege nur eine Fehlermail alle 12h.
Hier das Script:
#!/bin/bash
# a² 08.09.2003
# prüft erreichbarkeit und verschickt im fehlerfall eine mail
# syntax: checkhost.sh host recipient
#set -xv
FLAG=/tmp/ping-alarm-$1
# check ob FLAG älter als 12h
if [ -f $FLAG ]
then
/usr/local/bin/find /tmp -name $FLAG -mmin +720 -exec rm -f {} \;
fi
if [ ! -f $FLAG ]
then
ping "$1" > /dev/null 2>&1
else
ping "$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