Reconnecten eines Speedport-Routers mit curl
Für diesen Zweck hatte ich bisher immer wget benutzt, da die alten Interfaces einfache Requests aka wget http://router/reconnect?user=admin&password=blubb
durchaus ausreichten. Leider sind jedoch die Interfaces der neuen Generationen nicht mehr so simpel, wir brauchen Cookies und mehrere POST-Requests. (Das Webinterface auf dem Speedport läuft übrigens auf einem Apache)
Zur Analyse benutze ich hier das Live HTTP headers Addon für Firefox. Hier der ganze Vorgang mit Login, "Trennen", "Verbinden" und dem Logout (Logout nicht vergessen! Das Interface wird sonst für eine Zeit lang als "in Benutzung" blockiert sein).
1 2 3 4 5 6 7 8 9 10 11 |
|
Sollte also nicht schwierig sein, die vier Schritte mit curl nachzubilden.
Erster Versuch: ein Login-POST-Request mit falschen Daten (erstmal rantasten):
1 |
|
Ergebnis: Your client does not have permission to get this page.(code=41193) from this server.
Hm, vielleicht lehnt das Ding curl ab?
1 |
|
403 - meh. Ach ja!
1 |
|
Bingo. Referrercheck! Das Ergebnis ist ein JSON, login: failed
, wie zu erwarten.
Letztlich sieht das fertige Skript dann wie folgt aus:
1 2 3 4 |
|
Hinweis: curl unterscheidet zwischen cookie schreiben und lesen, darum beim Login -c
, um den Sessioncookie in der Datei abzulegen und -b
um die Datei als Authentifizierung zu nutzen.