OneClick Router Reconnect per Telnet

Bisweilen hat man im Internet ja das Bedürfnis seine öffentliche IP-Adresse zu verändern. Dies ist weniger kompliziert als es klingt, im Grunde muß man nur die Verbindung zum Provider abbauen und eine neue herstellen. Bei jeder Neuanmeldung vergeben die Provider eine neue Adresse aus ihrem Pool. Man kann also einfach seinen Router neu starten, das erfüllt diesen Zweck. Allerdings ist es etwas umständlich jedes mal den Router aus und wieder anzumachen. In aller Regel kann man jedoch per Browser auf seinen Router zugreifen und einen Neustart veranlassen. Dummerweise habe ich bei mir die Firmware der 7113 irgendwann mal durch diverse Experimente zerschossen, so dass das Webinterace nicht mehr erreichbar ist, obgleich die Box alle seine Aufgabe völlig normal verrichtet. Es mußte also eine andere Alternative her, um gelegentlich eine neue IP-Adresse zu bekommen. Passenderweise bieten mittlerweile alle FritzBoxen die Möglichkeit per Telnet auf das Gerät zuzugreifen und einige Kommandos auszuführen.

Erster Bildschirm von Kitty nach dem Start.

Erster Bildschirm von Kitty nach dem Start.

Bevor man irgendwas per Telnet an der Box verändern kann, muß der Telnet-Server der FritzBox aktiviert werden. Standarmäßig ist dieser Deaktiviert und kann (meines Wissens) auch nicht per Webinterface angeschaltet werden. Scheinbar will AVM für dieses Feature keinen Support machen, prinzipiell braucht man es ja auch nicht. Eigentlich. Es seie denn man braucht es doch.
Um den Server zu aktivieren kann man bei den FritzFon-Geräten jedoch einen Anruf tätigen und die Box bitten, den entsprechenden Dienst zu starten. Dazu gibt es folgende Kurzwahlen:

#96*7* Telnet ein
#96*8* Telnet aus

Jetzt kann man mit jedem beliebigen Client (z.B. Putty oder Kitty) auf die Box zugreifen und mal nachschauen, ob jemand zu Haus ist. Für dieses kleine Experiment habe ich Kitty verwendet. Kitty ist ein Fork von Putty und implemtiert ein paar Funktionen mehr als dieser Client. Funktionen, die wir später brauchen werden, wenn es darum geht den Neustart zu automatisieren.
Wir öffenen das Program und werden gleich mit einer passenden Meldung begrüßt. Hier können wir jetzt einfach mal die Adresse der FritzBox eintragen und festlegen, dass wir eine Telnetverbindung wünschen. Nachdem wir “Open” gedrückt haben, wechselt der Bildschirm und wir können uns an der Box anmelden. Hier müssen wir uns mit dem Benutzer “root” anmelden (Linux-Spezies klappen sich schon die Fußnägel hoch, das tatsächlich alles über den root-Nutzer läuft. Zum Glück ist der Telnet-Server nur aus dem lokalen Netz erreichbar.). Das Kennwort entspricht dem Kennwort mit welchem man sich normalerweise auch am Webinterface der Box anmeldet. Bei der Eingabe des Kennwortes nicht wundern: Hier nichts angezeigt, wenn man das Kennwort einträgt. (Typisch für Unix-Systeme bei der Eingabe von Passwörtern.).

Nach der Anmeldung und Ausführen des Reconnects.

Nach der Anmeldung und Ausführen des Reconnects.

War die Anmeldung erfolgreich, sieht man eine Eingabeaufforderung, wie man sie von Konsolen gewohnt ist. Hier kann man nun einige reguläre Linux-Konsolenkomandos an die Box senden, diese führt sie dann aus. Im Bild ist zu sehen, das bei mir eine Freetz-Firmware läuft, also just die Software, die mir das reguläre Webinterface zerschossen hat. Bei anderen Boxen wird die Ansicht anders sein.
Um nun einen Reconnect auszuführen, muss man die Verbindung zum Provider unterbrechen und erneut aufbauen. Dazu kann man den sogenannten dsl-deamon der Box beenden. Dieses Programm ist wohl maßgeblich für die Verbindung verantworlich. Beendet wird der Dienst mit :

dsld -s

Gestartet wird der Deamon mit dem gleichen Kommando,  jedoch ohne Parameter. Das Beenden des Dienstes dauert einen kleinen Moment, der Neustart geht jedoch recht fix. Mit “exit” kann man die Telnet-Verbindung wieder beenden. Kitty schließt sich dann von selbst.

Das Eingeben dieser ganzen Kommandos ist natürlich einigermaßen umständlich. Kitty bietet jedoch die Möglichkeit, solche Aufgaben automatisiert ablaufen zu lassen. Starten wir Kitty also erstmal neu und schauen, wie wir das hinbekommen. Kitty bietet die Möglichkeit des Auto-Login am Telnet-Server. Ein “Login Script File” kann in der “Data”-Sektion unter “Connection” eingebunden werden. Dieses Feature ist eigentlich dazu gedacht (wie der Name schon sagt), den Anmeldeprozess zu automatisieren, im Grunde lassen sich damit aber aller Hand Aufgaben automatisieren. Das “Login”-Skript ist ein einfaches Text-File, in welches die Kommandos eingetragen werden die ausgeführt werden sollen. Und zwar gerade so, als ob man sie direkt in die Konsole tipperte (es lebe die Umgangssprache und der Konjunktiv…). Vor jedes Kommando kommt eine Zeile in der die Ausgaben der Box geschrieben werden. Kitty vergleicht hier also einfach der Reihe nach, ob die Box eine bekannte Ausgabe macht und reagiert darauf mit der Zeile direkt darunter. Für das automatisieren des Reconnect kommt bei mir folgendes Skript zusammen:

fritz.fonwlan.box login:
root
Password:
****
/var/mod/root #
dsld -s
/var/mod/root #
dsld
/var/mod/root #
exit

Wichtig: Log-File immer überschreiben oder Option deaktivieren.

Wichtig: Log-File immer überschreiben oder Option deaktivieren.

Ziemlich überschaubar (Ja und auch hier klappen sich wieder ein paar Fußnägel hoch: Das Password wird Plain-Text in die Datei geschrieben und genauso unverschlüsselt an die Box übertragen. Der Nachteil von Telnet. Wer also zu Paranoia neig, möge bitte nicht weiterlesen.) Wenn man die Abbildung der Kitty-Konsole oben mit dem Skript vergleicht, sollte das Prinzip klar werden. Für unseren automatisierten Reconnect ist ein solches Text-File von Nöten, das wir unter “Data” im “Connection”-Bereich einbinden. Dieses File ist jetzt Teil des Profils. Kitty speichert für jede Adresse und jeden Verbindungstyp ein eigenes Profil, wenn wir sie lieb darum bitten. Wir sollten das tun, denn wir werden dieses Profil später brauchen. Nachdem also das Skript eingetragen wurde, gehen wir nochmal in den Session-Bereich und geben die Adresse der FritzBox neu ein, wählen “Telnet” als Verbindung aus und (wichtig) wählen im Bereich “Logging” (direkt unter “Session”) die Option “Always overwrite it”. Der Hintergrund ist: Kitty (wie Putty auch) legt bei jedem Neustart ein Log-File an. Wählen wir diese Option nicht, würde Kitty bei jedem Neustart nachfragen, ob das Log-File überschrieben werden darf oder nicht. Uns ist das Log-File egal, zumindest für diese Aufgabe. Zumindest, so lang alles glatt läuft. Deshalb deaktivieren wir diese Option auch nicht, das Log-File könnte ja irgendwann mal ein paar nützliche Infos enthalten.

Haben wir alles beisammen können wir im Session-Bereich diesem Profil einen Namen geben (zum Beispiel fritz.box) und speichern.

Für einen “One-Click” Reconnect fehlt jetzt eigentlich nur noch, dass wir Kitty aufrufen und gleich anweisen können, das vorbereitete Profil durchlaufen zu lassen. Das geht. Wenn wir unter Windows eine Verknüpfung von Kitty erstellen, haben wir die Möglichkeit, dem Programm beim Aufruf Parameter mitzugeben. Diese lassen sich in den Eigenschaften der Verknüpfung in der Zeile “Ziel” festlegen. In dieser Zeile wird leglich der Pfad angezeigt, unter dem Windows das Programm findet. Also: zunächst eine Verknüpfung für Kitty erstellen und anschließend die Eigenschaften selbiger aufrufen. Nun kann man in der Zeile Zeil den Programmnamen um Parameter erweitern. In diesem Fall:

Einstellen des Parameter in der Verknüpfung

Einstellen des Parameter in der Verknüpfung

-load “fritz.box”

erweitern. Damit weist man Kitty an, gleich das erstellte Profil “fritz.box” zu laden. Teil des Profils ist die automatische Anmeldung und damit gleich der Reconnect. Das war´s.

Will man den Reconnect aus einem anderen Programm heraus ausführen, klappt der Weg über die Verknüpfung leider nicht. Bei den meisten Programmen erfolgt der Aufruf dann ohne den “-load”-Parameter. In aller Regel kann man aber auch einfach auf eine .bat-Datei verweisen, die das Programm dann ausführt und damit wieder den Neustart auslöst. Zu diesem Zweck muss man abermals ein einfaches Text-File erstellen, welches die Dateiendung .bat erhält. Für unseren Zweck zum Beispiel “neustart.bat”. In diese Datei kommt wieder der auf Aufruf von Kitty mit Parameter. Hier wird jedoch ein “Call” ergänzt, um die Übergabe des Parameters sicher zustellen. Wenn die .bat Datei im gleichen Verzeichnis wie Kitty liegt also folgendermaßen:

call kitty.exe -load “fritz.box”

Ansonsten sollte man den absoluten Pfad zum Programm angeben. Mit einem Doppelklick auf diese Datei kann man dann den Neustart auslösen. In aller Regel können das dann auch andere Programme.

Kein ähnlichen Artikel.