seit Wochen nun mach ich rum mit meinen heimatlichen WiFi Endgeräten.

So selig ich damit war, mit meiner neuen Fritzbox 300 MBit unterstützen zu können war es dann trotzdem dauernd so, dass aus irgendwelchen abstrusen Gründen immer mal mein WLan ausfiel, der Homeserver plötzlich nicht mehr erreichbar war etc.

Meine erste Lösung war, dem Homeserver einen Restart-Job zu verpassen und die Fritzbox an eine Zeitschaltuhr zu hängen.

Seit gestern aber lasse ich die Fritzbox per Script neu starten und spare mir damit das nervige Getickere unserer Zeitschaltuhr (die klang wie eine Festplatte beim Positionieren…).

Wie das geht?

Nun ja, es führen viele Wege nach Rom.
Die Fritzbox wird mit einem Linux-System betrieben, also wäre die naheliegendste Lösung einen Cron-Job zu implementieren. Leider ist im Lieferumfang der FB kein passender Daemon gestartet… Da wäre nun eine Möglichkeit, eine modifizierte FB Firmware zu installieren, sprich: Die Fritzbox mit einer angepassten Firmware zu flashen. Ich habe das gelassen, primär weil ich mich nicht wohl bei dem Gedanken fühle, aus dem Netz ein Image auf meiner Box zu installieren. Ergo blieb die Frage, ob das nicht auch mit Bordmitteln ginge.

Und was soll ich sagen: Es geht :)

Mein Lösungsweg sieht so aus:

1. Telnet Daemon auf der Fritzbox aktivieren und sicherstellen, dass er immer wieder mit der Box mitstartet

2. Verbindung per Telnet zur Box herstellen und Reboot-Kommando absetzen

 

1. Telnet einrichten

Telnet ist auf der Fritzbox per default nicht gestartet. Allerdings kann man die Box dazu bringen, das nachzuholen. Einfach ein Telefon nehmen, und durch die Eingabe von

#96*7*  aktivieren bzw. mit
#96*8*  deaktivieren.

Einmal gestartet kann man sich mit

telnet fritz.box

auf der Box anmelden. Falls der telnet client unter Windows nicht installiert ist, kann man das per “Add/Remove programs” nachholen.

Nun gilt es, dafür zu sorgen, dass Telnet permanent gestartet wird. Die Fritzbox hat dazu eine Konfigurationsdatei, die im permanenten Speicher liegt und bei jedem Start ausgeführt wird, debug.cfg.

Mit folgender Zeile trägt man dort den Telnet Daemon ein:

echo '/usr/sbin/telnetd -l /sbin/ar7login' > /var/flash/debug.cfg

Wer übrigens die Datei später editieren will, der kann dafür nvi verwenden, vi “sieht” den Inhalt leider nicht, da debug.cfg wohl keine echte Datei ist.

So… der Telnet daemon startet also in Zukunft automatisch. Per /sbin/reboot bootet die Box übrigens neu. Was nun?

 

2. Telnet automatisieren

Leider kann man Telnet nicht automatisieren… Das war eine herbe Enttäuschung, wähnte ich mich doch schon auf halbem Weg.

Im Netz kursieren ein paar Scripts, die man in der debug.cfg eintragen kann um einen Neustart der Box zu erreichen. Leider hat keiner dieser Scripts bei mir funktioniert, so dass der Weg von “aussen” als der bessere erschien.

Also blieb nur noch der Weg, Telnet per Script “fernzusteuern”:

set sh=WScript.CreateObject("WScript.Shell")
sh.run "Telnet fritz.box"
WScript.Sleep 500
sh.SendKeys "UltraGeheimesPasswortHierEinfügen"&vbcr
WScript.Sleep 1000
sh.SendKeys "/sbin/reboot"&vbcr

Das ganze in eine .vbs-Datei gepackt und als geplanten Task im homeserver um 3 Uhr Nachts gestartet löst jetzt alle meine heimatlichen Netzwerkprobleme. Seitdem läuft alles stabil :-)

 

Und ja: Ich weiss, es ist schmutzig :-)