[HowTo] Router (z.B. Fritzbox) per Crontab+Telnet neustarten

  • Hallo zusammen,


    ich möchte kurz eine Anleitung schreiben, wie man mittels Crontab seinen Router immer zur gleichen Zeit neu booten lassen kann.
    Hintergrund: Ich hatte Probleme mit VOIP auf meiner Fritzbox und lasse sie deshalb jede Nacht um 4 Uhr neu starten.
    Für Profis ist das wahrscheinlich ein Klacks, als blutiger Linux anfänger musste ich mir jedoch alles zusammensuchen.
    Vielleicht kann es ja jemand gebrauchen:



    Was man dafür braucht:
    1. Optware IPKG (http://wiki.qnap.com/wiki/Install_Optware_IPKG)


    2. Installiertes Python (z.B. Version 2.5)
    zur Überprüfung der Installation eine SSH Verbindung zum NAS aufbauen und

    Code
    1. Python

    eingeben. Falls es installiert ist kommt eine Meldung wie in etwa:

    Code
    1. Python 2.5.6 (r256:88840, Feb 15 2012, 19:50:54)[GCC 4.2.3] on linux2Type "help", "copyright", "credits" or "license" for more information.

    mit

    Code
    1. exit()

    kann man die Pythoneingabe verlassen.


    Falls die Meldung nicht erscheinen sollte einfach Python nachinstallieren:

    Code
    1. ipkg install python25


    2. Das Modul Pexpect
    Dieses kann hier Heruntergeladen werden: http://sourceforge.net/projects/pexpect/files/
    Ich habe die Tar Datei mit Winrar entpackt und nach /etc/ kopiert.
    Dann per SSH in das entpackte Verzeichnis wechseln und zur Installation von pexpect folgendes eingeben:

    Code
    1. python setup.py install


    3. Python Script zum Neustart
    Mein Script sieht wie folgt aus:

    Code
    1. #!/opt/bin/python2.5import pexpectchild = pexpect.spawn ('telnet 192.168.1.1')child.expect ('password:')child.sendline ('mein passwort')child.expect ('Console Ausgaben auf dieses Terminal umgelenkt')child.sendline ('reboot')child.sendline ('exit')child.close()


    Kurze Erläuterung: Der Befehl pexpect wartet auf die Ausgabe eures Routers wenn man sich per Telnet verbindet. Bei der Fritzbox wird z.b. nur nach dem Passwort gefragt, es erscheint die Meldung "password:"
    Falls z.B. zusätzlich nach einem Anmeldenamen gefragt wird müsstet ihr das Script entsprechend anpassen.


    Mein Script habe ich kopiert nach /etc/fritzrestart.py


    4. Crontab anpassen
    Die Datei /etc/config/crontab mit einem Editor bearbeiten und den gewünschten Eintrag ergänzen.
    Um die Fritzbox z.B. jeden Morgen um 4 Uhr neu zu starten sieht der Eintrag wie folgt aus:

    Code
    1. 0 4 * * * /etc/fritzrestart.py


    Um unterschiedliche Zeiten einstellen zu können kann ich folgende Seite nur empfehlen, dort kann man sich per Mausklick einen passenden Crontabeintrag generieren lassen:
    http://www.corntab.com/pages/crontab-gui


    anschließend muss die Datei per SSH neu eingelesen werden und der crontab neu gesartet werden:


    Code
    1. crontab /etc/config/crontab
    2. /etc/init.d/crond.sh restart


    Viel Spaß damit!

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Threadtitel geändert, Thread verschoben.

  • Danke, du erinnerst mich gerade dran, dass ich heute Nacht auch mal wieder meine Fritzbox neu starten sollte. Oder ich versuche gleich mal deine Anleitung :D