Vodafone Router automatisch rebooten mit twill

Viele Seiten lassen einen ja nur eine bestimmte Menge an Daten downloaden und unterbinden danach jeglichen Dateitransfer. Da ich mir heute ein Skript gebaut habe, das mindestens 8h laufen wird und ich schon recht schnell wegen einem Download-Limit gestoppt werde, musste ich mir was ausdenken.

Manuell den Router resetten um eine neue IP zu bekommen wäre Wahnsinn. Da fiel mir twill ein.

Twill ist ein Python Programm bzw. Modul. D.h. es kann interaktiv in der Shell benutzt werden oder auch als Modul um selber Aufgaben skripten zu können.

Nun, was macht twill?

twill verhält sich wie ein Browser und kann Formulareingaben machen, Buttons drücken, etc... Also alles, was ein Browser kann, kann man skripten bzw. automatisieren.

Also ran an den Speck und den Button Rebooten im Arcor Router skripten. Logindaten sind natürlich Fantasiewerte...

Twill von der Shell heraus

Inhalt der Datei reboot-router.twill

go 'http://192.168.0.254/login.stm'
fv 2 user root
fv 2 pws Geheim
submit
go 'http://192.168.0.254/cgi-bin/restart.exe'

Ausführen via twill-sh

twill-sh reboot-router.twill

Twill als Python Skript

import twill
 
twill.commands.go('http://192.168.0.254/login.stm')
twill.commands.fv(2, 'user', 'root')
twill.commands.fv(2, 'pws', 'Geheim')
twill.commands.submit()
twill.commands.go('http://192.168.0.254/cgi-bin/restart.exe')

Was passiert hier

  • twill ruft die Login Seite des Routers auf
  • Nimmt das zweite Formular ( fv = formvalue )
  • Setzt dort bei den Feldern mit dem Namen 'user' und 'pws' die Login-Daten ein
  • Drückt den Button (submit)
  • Nun sind wir eingeloggt
  • Danach ruft twill die 'restart.exe' auf, die den Reboot auslöst