Wie steuer ich die FritzBox mit TR-064?

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
379
tach,

ich habe versucht irgendwelche info über die steuerung der fritzbox über das TR-064-Protokoll zu bekommen - vergebens. es gibt hier eine übersicht, aber wie ich da etwas "sende" steht da nicht, also irgendwie wie

tr64 -i 192.168.178.1 -u user -p password -command1 -command2 -command3

der link scheint die 'commands' zu erklären, aber das grundlegende vorgehen nicht. ich schreibe bewusst "scheint", denn ich erkenne nicht was die anleitung genau beschreibt. es gibt bei avm noch eine umfangreichere pdf, die das gleiche macht, nur umfangreicher.

man findet viel wie man die fritzbox-steuerung in ein bestehendes projekt einbaut, also irgendwelche heim-automatisierungen mit einem raspberry pi. ich will aber einfach vom notebook aus etwas steuern. auch gibt es "fritzconnection", das auf python basiert. damit gehen schöne sachen, ob da im hintergrund aber tr-064 genutzt wird weiß ich nicht. was mir hier konkret fehlt ist die möglichkeit die kindersicherung für ein gerät ein- und wieder auszuschalten (keine zeitschaltung).

kann einer erklären wie ich mit tr-064 die kindersicherung z. b. für mein tablet an- und wieder ausschalten kann?
 
Es ist eher die Frage, auf welchen Schnittstellen wenn tr-064 aktiv geschaltet ist, überhaupt "lauscht". Möglich, dass es das nur auf der WAN/DSL/Cable Schnittstelle ist, da es ja für den Provider gedacht ist.
 
Zuletzt bearbeitet:
Tatsächlich läuft TR-064 ausschließlich LAN-seitig. Ich hatte das mit TR-069 verwechselt. Zum Verständnis und ggf. anpassen an eigene Bedürfnisse eignet sich vielleicht dieses PowerShell-Skript: FB-Power
 
  • Gefällt mir
Reaktionen: kartoffelpü
Hier ein VB Beispiel (Reconnect):

Code:
    Sub FritzBoxReConn()
        Dim body() As Byte = Encoding.ASCII.GetBytes("<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/""><s:Body><u:ForceTermination xmlns:u=""urn:schemas-upnp-org:service:WANIPConnection:2"" /></s:Body></s:Envelope>")

        Dim HttpRequest As HttpWebRequest = WebRequest.Create("http://fritz.box:49000/igd2upnp/control/WANIPConn1")
        With HttpRequest
            .Method = "POST"
            .ContentType = "text/xml"
            .Headers.Add("SOAPACTION", "urn:schemas-upnp-org:service:WANIPConnection:2#ForceTermination")
            .ContentLength = body.Length
            .Timeout = 2000
        End With

        Try
            HttpRequest.GetRequestStream.Write(body, 0, body.Length)
            HttpRequest.GetResponse.Close()
        Catch ex As Exception
        End Try
    End Sub
 
Dachte das ganze ist systemunabhaengig. Ich hab kein Windows, nur Linux. Visual basic und power shell ist Windows. Ich versteh bei den beiden Skripten nichts.
 
FatManStanding schrieb:
Dachte das ganze ist systemunabhaengig.
Ist es auch. Wenn du die Entwicklerdoku liest, wirst du feststellen, dass UPnP genutzt wird. Das ist SOAP, was wiederum (vereinfacht) XML über HTTP(S) ist. Wie du die Requests erzeugt, bleibt dir überlassen. PowerShell gibts mittelerweile auch für Linux. Das sollte aber ohnehin nur ein Bespiel sein, wie die Kommunikation funktioniert. Einen fertigen Befehl, wie du ihn dir vorstellst, gibt es für dein Anliegen nicht. Du wirst mithilfe der Doku bereits existierende Skripte anpassen müssen.
 
soweit ich das verstehe lässt sich alles in 3 "stufen" unterteilen: services, actions und arguments, also 3 "ebenen".

im das reconnect-script sieht das dann so aus:

Code:
WANIPConnection:1#ForceTermination

das sind dann aber nur 2 "ebenen". WANIPConnection1 ist der service und "ForceTermination" die action. ein argument scheint es da nicht zu geben.

angenommen ich will das gast-wlan einschalten, dann vermute ich: WLANConfiguration1 -> X_AVM-DE_GetWLANExtInfo -> NewX_AVM-DE_APEnabled. als "data type" steht da "string", d.h. ich muss hier vermutlich einen wert (1 für an, 0 für aus???) mitgeben?

in dem reconnect-script steht das so drin:

Code:
WLANConfiguration:1#ForceTermination

müsste ich also jetzt

Code:
WLANConfiguration:1#X_AVM-DE_GetWLANExtInfo#NewX_AVM-DE_APEnabled

eintragen?
 
FatManStanding schrieb:
angenommen ich will das gast-wlan einschalten
Habe ich mal mit Node-Red gemacht:

Code:
URL:
http://fritz.box:49000/upnp/control/wlanconfig3

Code:
msg.headers={SoapAction: 'urn:dslforum-org:service:WLANConfiguration:3#SetEnable', 'Content-Type': 'text/xml; charset="utf-8"'};
msg.payload='<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetEnable xmlns:u="urn:dslforum-org:service:WLANConfiguration:3"><NewEnable>1</NewEnable></u:SetEnable></s:Body></s:Envelope>';
 
ich habe mich an diesem script hier orientiert:

Code:
curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

quelle: https://wiki.ubuntuusers.de/FritzBox/Skripte/#ffentliche-IP-Adresse-auslesen

meines zum einschalten des gast-wlans sieht so aus und müsste meiner meinung nach gehen:

Code:
curl "http://fritz.box:49000/igdupnp/control/wlanconfig3" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WLANConfiguration:3#SetEnable" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:SetEnable xmlns:u='urn:dslforum-org:service:WLANConfiguration:3'> <NewEnable>1</NewEnable> </u:SetEnable> </s:Body> </s:Envelope>" -s

die ausgabe ist dann:

Code:
<?xml version="1.0"?>
 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>401</errorCode>
<errorDescription>Invalid Action</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>

das gleiche kommt wenn ich wlanconfig1 oder ...2 versuche. ich finde das ganze komisch, da hier nicht wirklich drin steht, dass man das gast-wlan einschalten will. für mich sieht es so aus als würde man das ganze wlan einschalten wollen. ich weiß auch nicht was die 3 wlanconfigs be mir alle sein sollen.

kann es sein, dass ich dafür den benutzer-login brauche? für den reconnect brauchte man das nicht.
 
Zurück
Oben