fritzbox-restart-script/README.md
Patrick Asmus 179593b007 filename
2023-07-16 13:18:22 +00:00

50 lines
2.7 KiB
Markdown

# Fritz!Box-Neustart-Script
![avm-fritzbox.png](avm-fritzbox.png?raw=true "avm-fritzbox.png")
Das Bash-Skript `fritzbox-restart.v1.sh` ermöglicht das Neustarten einer Fritzbox über das TR-064-Protokoll. Das Skript ist kompatibel mit Fritzboxen ab FritzOS 6.0.
## Verwendung
1. Stelle sicher, dass du als Administrator auf deinem System angemeldet bist.
2. Öffne ein Terminal.
3. Navigiere zum Verzeichnis, in dem sich das Skript befindet.
4. Führe den folgenden Befehl aus, um das Skript zu starten:
```bash
bash ./fritzbox-restart.v1.sh
```
Alternativ kannst du den Befehl auch anpassen und direkt im Terminal ausführen.
```bash
ping -c 1 1.1.1.1 >/dev/null || (for i in {1..3}; do ping -c 1 1.1.1.1 >/dev/null && exit; sleep 30; done; /home/scripts/network/fritzbox-reboot.v1.sh)
```
Dieser Befehl stellt sicher, dass keine Internetverbindung besteht, bevor das Skript ausgeführt wird. Es versucht, eine Verbindung zum öffentlichen DNS-Server `1.1.1.1` herzustellen und führt das Skript nur aus, wenn die Verbindung 3 mal nicht erfolgreich war. Andernfalls wird nichts weiter unternommen.
Das Skript sendet über `curl` einen SOAP-Request an die Fritzbox, um den Neustart auszulösen. Die Fritzbox-IP-Adresse, der Benutzername und das Passwort werden in den Variablen `IPS`, `FRITZ_USER` und `FRITZ_PW` festgelegt. Du kannst diese Variablen entsprechend deiner Konfiguration anpassen.
Es empfiehlt sich einen dedizierten `Restart`-Benutzer anzulegen. In den meisten Fällen kann hier `root` eingetragen werden, wenn kein Username zum Login notwendig ist.
Als Cronjob kann dieses Script natürlich auch ausgeführt werden.
Ein Beispiel:
```bash
*/30 * * * * ping -c 1 1.1.1.1 >/dev/null || (for i in {1..3}; do ping -c 1 1.1.1.1 >/dev/null && exit; sleep 30; done; /home/scripts/network/fritzbox-reboot.v1.sh)
```
Diese Cronjob stellt eine Verbindung zum öffentlichen DNS-Server `1.1.1.1` her. Ist die Verbindung erfolgreich, passiert nichts weiter. Ist die Verbindung 3 mal nicht erfolgreich gewesen, so wird dss Script ausgeführt. Der Cronjob führt die Abfrage alle 30 Minuten aus.
Wer seine Fritzbox einfach nur zur geplanten zeit neustarten möchte, kann natürlich auch einfach nur das Script ausführen:
```
# FRITZ! Geräte neustarten
@weekly root /home/scripts/network/fritzbox-reboot.v1.sh)
```
Bitte beachte, dass du vor der Verwendung des Skripts die Variablen `IPS`, `FRITZ_USER` und `FRITZ_PW` korrekt einstellen und die Ausführungsberechtigungen für das Skript setzen musst.
## Weitere Infos zur Schnittstelle `TR-064`
* http://fritz.box:49000/tr64desc.xml
* https://wiki.fhem.de/wiki/FRITZBOX#TR-064
* https://avm.de/service/schnittstellen/