Ein Watchdog für den PPP-Daemon

Wenn man weltweit Zugriff auf seine eigenen E-Mails hat, ist das eine feine Sache. (Beim neudeutschen Buzzword-Bingo nennt man das wohl „in der Cloud“ – der Kenner weiß dagegen, dass IMAP keine neue Erfindung ist… ;)) Allerdings muss im Jahr Eins nach Snowden mit dem Klammerbeutel gepudert sein, wenn man ein solches IMAP-Postfach bei Apple, Google oder einer der anderen Datenkraken unterhält. Also betreibt „man“ eben seinen eigenen IMAP-Server zu Hause in seinen eigenen vier Wänden.

So weit, so gut. Dumm ist nur, wenn – wie bei mir auf meinem Debian-System – der PPP-Daemon, der die DSL-Verbindung zur Außenwelt zur Verfügung stellt, alle paar Monate ohne erkennbaren Grund einfach abstürzt, dadurch die Internetverbindung nicht mehr funktioniert und damit eben auch der Zugriff aufs IMAP-Postfach nicht mehr möglich ist. Noch dümmer ist, wenn das passiert, wenn man gerade im Ausland ist und dadurch auch keine sinnvolle Möglichkeit zur „Fernreparatur“ hat. Man ahnt es schon: genau das ist mir kürzlich passiert. Also muss eine automatisierte Lösung her, die den PPP-Daemon überwacht und ihn gegebenenfalls neu startet. Ich habe mich nach etwas recherchieren und basteln für diese Lösung entschieden:


#!/bin/sh

pppcount=`ps -ef | grep ppp | grep -vc -e grep -e ${0}`

if [ $pppcount -eq 0 ]
then
echo "PPP daemon NOT running - restarting"
pon provider
fi

Kurz zur Erklärung der ersten Skriptzeile:

  • ps -ef zeigt alle laufenden Prozesse an.
  • grep ppp fischt daraus alle Zeilen heraus, die den String „ppp“ enthalten.
  • Aus diesem „Zwischenergebnis“ zählt (-c) „grep -vc -e grep -e ${0}“ alle Zeilen, die nicht (-v) den String „grep“ und nicht den Namen des Skriptes (${0}) enthalten. Diese Ausschlüsse sind notwendig, da auch das gerade laufende Watchdog-Skript und die grep-Prozesse in der von ps ausgegebenen Liste auftauchen und natürlich nicht mitgezählt werden sollen.

Das Ergebnis dieser Zählung wird im folgenden if-Block ausgewertet: Läuft der PPP-Daemon nicht mehr, ist das Ergebnis 0. Dann wird eine entsprechende Fehlermeldung ausgegeben und der Daemon mittels „pon provider“ neu gestartet.

Dieses Skript liegt nun als „ppp-daemon-watchdog“ in /etc/cron.hourly. Ein „scharfer“ Test steht zwar noch aus, aber den „Trockentests“ nach sollte alles funktionieren wie gewünscht. 🙂

Schreibe einen Kommentar