Raspberry Pi ohne WLAN Verbindung automatisch neu starten

Wenn man einen Raspberry Pi in eine ruhige Ecke stellt, an den Strom anstöpselt und über WLAN auf ihn Zugreifen kann, ist es sehr ärgerlich, wenn der Pi die Internetverbindung verliert und plötzlich nicht mehr gesteuert werden kann. Doch statt selbst zu ihm zu gehen und den Stecker zu ziehen, kann man auch ein Skript verwenden, welches den Pi bei fehlender Internetverbindung automatisch neustartet.

Um die Internetverbindung zu prüfen und den Pi gegebenenfalls neu zu starten benötigt man ein kurzes Bash-Skript. Dieses Skript kann mit einem beliebigen Texteditor geschrieben werden, zum Beispiel Leafpad, vi(m) oder nano. In das Skript schreibt man folgendes hinein:

ping -c 5 $(ip route show to 0/0 | awk '{ print $3 }') > /dev/null

if [ $? != 0 ]
then
  sudo /sbin/shutdown -r now
fi

code

Dieses Skript speichert man (beispielsweise) hier: /usr/local/bin/checkwifi.sh, wobei der Name der Datei checkwifi.sh ist. Die Zeile

ping -c5 $(ip route show to 0/0 | awk '{ print $3 }') > /dev/null

ermittelt die IP des eigenen Routers. Anstelle von diesem Befehl, kann man auch die IP seines Routers oder eine beliebige Webseite eintragen. Dies würde zum Beispiel so aussehen:  ping -c5 http://google.com > /dev/null. Wenn der Befehl ping keine Antwort bekommen sollte, wird shutdown -r now ausgeführt, welches den Raspberry Pi neu startet.

Das Skript ist soweit bereit für den Einsatz, jetzt muss es nur noch automatisch ausgeführt werden. Dazu muss ein crontab (mehr Infos zu cron hier) angelegt werden. Hierzu tippt man den Befehl crontab -e in das Terminal ein. In der Textdatei fügt man an das Ende folgende Zeile ein:

*/5 * * * * /usr/bin/sudo -H /usr/local/bin/checkwifi.sh >> /dev/null 2>&1

Diese Zeile bewirkt, dass alle 5 Minuten das eigene Skript mit root Rechten ausgeführt wird. Sobald man die Datei von crontab gespeichert hat, beginnt der Pi automatisch mit der Ausführung des Skriptes. Ab sofort überwacht das Skript die Verbindung zum Internet und startet den Pi neu, sobald die Verbindung unterbrochen ist.

Statt Neustart nur das WLAN neustarten

Wer den Pi nicht direkt neustarten möchte, kann auch nur die WLAN Verbindung selbst neustarten. Dies hilft in den meisten Fällen und lässt den Pi normal weiterlaufen. Hierzu muss man nur ein leicht verändertes Skript verwenden und kann sonst genau wie oben vorgehen. Das Skript ist in dem Fall folgendes:

ping -c5 $(ip route show to 0/0 | awk '{ print $3 }') > /dev/null

if [ $? != 0 ]
then
  echo "No network connection, restarting wlan0"
  /sbin/ifdown 'wlan0'
  sleep 5
  /sbin/ifup --force 'wlan0'
fi
Diese Seite Teilen: