FritzBox Logout HTTP-Interface mit curl und cgi

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ingo2
Beiträge: 628
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

FritzBox Logout HTTP-Interface mit curl und cgi

Beitrag von ingo2 » 19.08.2018 18:43:53

Ich benuzte ein Bash-Script zum Steuern und Auslesen einer Schaltsteckdose (DECT 210) an meiner FritzBox. Klappt übrigens ganz prima, ist empfehlenswert.
Das Script selbst basiert auf dieser Quelle: http://www.pcwelt.de/82Ecau und dem Script "smart_fritz_terminal.sh" daraus. Habe es noch etwas erweitert, damit aus Sicherheitsgründen das Passwort abgefragt wird, statt fest eingebaut. Einen Schönheitsfehler hat das noch, denn es fehlt ein ordentlicher Logout (Der Timeout beträgt laut AVM 60 Minuten!).

In der Dokumentation von AVM zum Log-in/out heißt es (https://avm.de/fileadmin/user_upload/Gl ... on_ID.pdf):
Beenden einer Sitzung
Eine Sitzung kann durch Löschen der Session-ID jederzeit auch vor Ablauf des Timeouts von
60 Minuten beendet werden. Dies geschieht durch POST der Werte
sid=<Session-ID>
und
security:command/logout=<dummy>,
wobei der Wert für <dummy> irrelevant ist.
Jetzt eine Frage zur Syntax:
Momentan habe ich das so formuliert:

Code: Alles auswählen

# Logout
$CURL $INSECURE --data "security:command/logout=1&sid=$SID" $fbox/cgi-bin/webcm >/dev/null 2>&1
Ich weiß leider nicht, ob das auch ordentlich funktioniert, bekomme nur eine HTTP-Antwort, die ich nach /dev/null schicke, keine Aussage, ob ich tatsächlich ausgelogt bin.

Mit geht es um die Syntax, speziell die Nutzung der Zeichen "&" und"?" in "--data", z.B. so:

Code: Alles auswählen

# Logout
$CURL $INSECURE --data "?security:command/logout=1&sid=$SID" $fbox/cgi-bin/webcm >/dev/null 2>&1
oder

Code: Alles auswählen

# Logout
$CURL $INSECURE --data "security:command/logout=1 sid=$SID" $fbox/cgi-bin/webcm >/dev/null 2>&1
Wie sollte es korrekt sein?

Gruß,
Ingo

Antworten