ubuntuusers.de

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

Diese Revision wurde am 6. August 2015 15:21 von micressor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung, Shell