ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

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
#!/bin/bash
# a² - aquadraht@notmail.org 25.05.2005
# 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
        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

ubuntuusers.local › WikiSkriptePing-alive