[Frage] Fritzbox 7590 AX steuern via Skript?

3PO

Mitglied
Mitglied seit
3 Jun 2005
Beiträge
215
Punkte für Reaktionen
14
Punkte
18
Hallo Zusammen,

Seit FW 8.20 gibt es ja die Möglichkeit ein zweites Gateway als "Ausfallschutz" zu definieren.
Meine Frage ist nun, ob es eine Möglichkeit gibt, via Skript, z.B. via TR-064 oder LUA, oder Sonstiges, abzufragen, ob der Erstweg oder der Zweitweg gerade aktiv ist und ob es möglich ist die beiden Wege via Skript umzuschalten?

Die zweite Frage wäre, ob es via Skript möglich ist, den Gastzugang komplett zu aktivieren und deaktivieren, WLAN für den Gastzugang via Skript ein-, und ausschalten scheint ja zu gehen, für den Gastzugang via Ethernet habe ich bisher nichts gefunden?
 
Zuletzt bearbeitet:
Hat denn wirklich niemand eine Idee dazu?
 
Hallo 3PO, eine Lösung dazu kann ich leider nicht anbieten, eine Idee oder zumindest Denkansatz aber schon.
Der Ansatz wäre via TR-069 ACS. Es gibt dazu verschiedene Lösungen am Markt (kommerziell und kostenpflichtig).
Es gibt aber auch "genieacs" mit der Möglichkeit "DIY". Dazu nachfolgend einige Links.
 
Danke, für deine Antwort.
Ich habe schon einges im Internet gefunden, aber leider geht es immer nur das Gastnetz via WLAN.
Ich würde aber gerne das komplette Gastnetz aktivieren/deaktivieren, also auch das LAN gebundene, das bei mir an LAN4 angeschlossen ist.

Ich habe gesehen, daß die Fritzbox eine Möglichkeit bietet, einzelne LAN Ports via Webinterface zu deaktivieren. Auch damit wäre ich zufrieden, aber leider finde ich dazu nichts, wie ich diese Funktion via Script aufführen könnte.
 
Ich würde aber gerne das komplette Gastnetz aktivieren/deaktivieren, also auch das LAN gebundene, das bei mir an LAN4 angeschlossen ist.
Dafür könnte man das Zugangsprofil "Gast" in der GUI manuell anpassen. Welches Fritz!OS wird aktuell verwendet?

BTW: Bitte einmal den Titel bzw. die Überschrift anpassen, eine "Fritzbox 7950 AX" gibt es nicht.
 
Zuletzt bearbeitet:
Habe den Topic angepasst und das OS ist das aktuelle 8.25, original, ohne irgendwelche Modifikationen.
 
Ich habe gerade bei Google ein PHP Script gefunden, das wohl genau das macht, was ich benötige:

PHP:
<?php
// IP der FritzBox
$fritzbox_ip = '192.168.178.1';
$password = 'DEIN_PASSWORD';

// 1. Session ID holen
$ch = curl_init('http://' . $fritzbox_ip . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);
$SID = $session_status_simplexml->SID;

if ($SID == '0000000000000000') {
    // Login erforderlich
    // (Hier müsste eine volle Login-Routine mit cURL implementiert werden,
    // um die SID mit dem Passwort zu erstellen)
    // Vereinfacht für das Beispiel: Wir nehmen an, die SID ist aktiv.
}

// 2. LAN Port Modus ändern (Beispiel: Port 2/3/4 auf deaktiviert)
// LAN1 (eth0) ist oft nicht deaktivierbar. LAN2-4 = eth1-eth3
// Die POST-Parameter können je nach FW-Version variieren!
$post_data = array(
    'sid' => $SID,
    'getpage' => '../html/de/menus/menu2.html',
    'lan:settings/eth1/mode' => '2', // 0=Power, 1=Green, 2=Disabled
    'lan:settings/eth2/mode' => '2',
    'lan:settings/eth3/mode' => '2',
);

$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_exec($ch);
curl_close($ch);
?>

Leider spreche kein PHP. Ich muß mal sehen wie daraus ein Bash Script machen kann.
 
Noch eine Nachfrage zum besseren Verständnis: Wenn eine Lösung via Sript angestrebt wird, auf welchem System bzw. OS sollen die Scripte dann ausgeführt werden?
 
Auf einem Server mit Linux, z.B. einem Raspberry Pi.
 
z.B. einem Raspberry Pi
Dazu habe ich noch einen interessanten Artikel zum Thema "Netzwerk Management Server mit Raspberry Pi". Dort sollten noch einige hilfreiche Hinweise mit enthalten sein, falls Lösung via Raspberry Pi erfolgt.
 
Danke,
Das ist ein interessanter Link, den ich mir mal in Ruhe anschauen werde, allerdings schießt das weit über das Ziel hinaus.
Ich möchte einfach nur, unter bestimmten Umständen, alle verbundenen Geräte, die sich im Gastzugang befinden, trennen.
 
  • Like
Reaktionen: tango501
unter bestimmten Umständen, alle verbundenen Geräte, die sich im Gastzugang befinden, trennen
Dafür könnte man auch einen managebaren Switch an LAN4 anschliessen und das Netzwerksegment darüber steuern.
 
Keine Ahnung, wie alt die Quelle für dieses Skript sein mag … aber das CGI-Binary webcm gibt es bei AVM schon deutlich länger als zehn Jahre nicht mehr.

Zwar kann der Weg, das über eine GUI-"Emulation" zu realisieren, durchaus von Erfolg gekrönt sein - aber definitiv nicht über webcm.

AVM hat mittlerweile ein (undokumentiertes) JSON-Interface (oder wie man das auch immer nennen will) eingebaut - einfach mal mit einem aktuellen (Desktop-)Browser und dessen Developer-Tools untersuchen, was beim Ein- und Ausschalten des Gastzugangs an LAN4 zur Box gesendet wird.

EDIT: Und dann muß man auch mit PHP nichts anfangen können - praktisch jede Sprache, die Web-Requests auslösen kann, eignet sich dann zur Umsetzung.
 
  • Like
Reaktionen: 3PO
Wie, weiter oben schon geschrieben, hat das PHP Script, die Google Suche ausgegeben, leider ohne Angabe der Quelle....

Das mit denn Developer-Tools, werde ich mal versuchen.
Danke für den Tipp!
 
Zuletzt bearbeitet:
hat das PHP Script, die Google Suche ausgegeben
Das ist ein Script aus der "Symcon Community". Das Script ist von 2012 und soll damals mit einer FB7390 und Fritz!OS 5.50 funktioniert haben. Die Zeiten sind aber schon lange vorbei.
 
Ich habe es mal mit Firefox versucht, aber leider kann ich mit den Ausgaben absolut überhauptnichts anfangen.....

Eventuell kann sich das ja mal jemand anschauen, der sich mit Webentwicklung auskennt?
 
Dafür könnte man auch einen managebaren Switch an LAN4 anschliessen und das Netzwerksegment darüber steuern.
Prinzipiell sicherlich eine gute Idee. Allerdings bräuchte ich dann eine zusätzliche Hardware und würde dann vermutlich vor dem selben Problem stehen, daß ich ein Script bräuchte, das dann den entsprechenden Port schaltet.
 
bräuchte ich dann eine zusätzliche Hardware und würde dann vermutlich vor dem selben Problem stehen
Dann mal eine ganz einfache Lösung: irgendeinen Switch an LAN4 der Box, die Stromversorgung vom Switch an eine schaltbare Steckdose. Man schaltet dann über die Stromversorgung des Switch das LAN-Gastnetz ab.
 
@3PO
Auch Du solltest langsam wissen, dass Doppelposts hier unerwünscht sind und die Admins diesbezüglich auch kein Addon aktivieren wollen und es wohl aktuell für Mods (weshalb auch immer) nicht mehr möglich ist, Posts zusammenzuführen, müsste ich Dich "leider" darum bitten, Deine "Fehltritte" aktuell eigenständig "geradeziehen" musst.
 
Über die Konsole im Browser ist es ganz einfach. Du wechselst zu den Einstellungen des Gast-WLAN und setzt den Haken, um das Gast-WLAN zu de-/aktivieren. Bevor du auf übernehmen klickst, öffnest du die Konsole und wechselst dort in die Netzwerkanalyse. Jetzt kannst du auf Übernehmen klicken.

In der Netzwerkanalyse erscheint dann ein POST, das du dir über einen Rechtsklick -> Wert kopieren -> Als cURL Adresse kopieren kopierst. Das sieht dann z.B. so aus:
Bash:
curl 'http://192.168.178.1/data.lua' \
  -X POST \
  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0' \
  -H 'Accept: */*' \
  -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' \
  -H 'Accept-Encoding: gzip, deflate, br, zstd' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Origin: http://192.168.178.1' \
  -H 'DNT: 1' \
  -H 'Sec-GPC: 1' \
  -H 'Connection: keep-alive' \
  -H 'Referer: http://192.168.178.1/' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'Priority: u=0' \
  --data-raw $'xhr=1&autoUpdate=0&guestAccessActive=on&guestAccessType=1&ssid=test&encryption=3&psk=12345678&isTimeoutActive=0&isOWEEnabled=0&activeNexusClient=false&apActive=1&apActiveScnd=0&boxType=box&defaultSsid=%5Bobject+Object%5D&deviceName=fritzbox&encryptionModes=%5Bobject+Object%5D%2C%5Bobject+Object%5D&guestGroupAccess=0&hideRepAutoUpdate=false&isEnabled=1&isHotspot=null&isIpClient=true&isMaster=false&isOWESupported=true&isPowerline=false&isRepeater=false&isolated=0&lPEnabled=0&lPImg=0&lPRedirect=0&lPRedirectUrl=&lPReguire=0&lPTxt=&masterIP=&mode=1&notification=0&notificationEnabled=1&productName=FRITZ\041Box+7490&protocol=23&protocolScnd=53&showGuest=false&showLandingpageImage=true&supportsRegulation=true&timeout=30&timeoutNoForcedOff=0&wpsActive=false&apply=&sid=cddfaf9273dd6b8a&lang=de&page=wGuest'

Das kürzt du zusammen auf:
Bash:
curl 'http://192.168.178.1/data.lua' \
  -X POST \
  --data-raw $'xhr=1&autoUpdate=0&guestAccessActive=on&guestAccessType=1&ssid=test&encryption=3&psk=12345678&isTimeoutActive=0&isOWEEnabled=0&activeNexusClient=false&apActive=1&apActiveScnd=0&boxType=box&defaultSsid=%5Bobject+Object%5D&deviceName=fritzbox&encryptionModes=%5Bobject+Object%5D%2C%5Bobject+Object%5D&guestGroupAccess=0&hideRepAutoUpdate=false&isEnabled=1&isHotspot=null&isIpClient=true&isMaster=false&isOWESupported=true&isPowerline=false&isRepeater=false&isolated=0&lPEnabled=0&lPImg=0&lPRedirect=0&lPRedirectUrl=&lPReguire=0&lPTxt=&masterIP=&mode=1&notification=0&notificationEnabled=1&productName=FRITZ\041Box+7490&protocol=23&protocolScnd=53&showGuest=false&showLandingpageImage=true&supportsRegulation=true&timeout=30&timeoutNoForcedOff=0&wpsActive=false&apply=&sid=cddfaf9273dd6b8a&lang=de&page=wGuest'

Was jetzt noch fehlt, sind deine Zugangsdaten und der Login, das fertige Script sieht dann so aus:
Bash:
#!/bin/bash

USERNAME="fritz1234"
PASSWORD="passwort"
URL=http://192.168.178.1

CHALLENGE=$(curl -s "$URL/login_sid.lua" \
  | sed -e 's/^.*<Challenge>//' -e 's/<\/Challenge>.*$//')

HASH=$(echo -n "$CHALLENGE-$PASSWORD" \
  | iconv -f ASCII -t UTF16LE \
  | md5sum \
  | awk '{print $1}')

SID=$(curl -s "$URL/login_sid.lua?sid=0000000000000000&username=$USERNAME&response=$CHALLENGE-$HASH" \
  | sed -e 's/^.*<SID>//' -e 's/<\/SID>.*$//')

curl "$URL/data.lua" \
  -X POST \
  --data-raw $"xhr=1&autoUpdate=0&guestAccessActive=on&guestAccessType=1&ssid=test&encryption=3&psk=12345678&isTimeoutActive=0&isOWEEnabled=0&activeNexusClient=false&apActive=1&apActiveScnd=0&boxType=box&defaultSsid=%5Bobject+Object%5D&deviceName=fritzbox&encryptionModes=%5Bobject+Object%5D%2C%5Bobject+Object%5D&guestGroupAccess=0&hideRepAutoUpdate=false&isEnabled=1&isHotspot=null&isIpClient=true&isMaster=false&isOWESupported=true&isPowerline=false&isRepeater=false&isolated=0&lPEnabled=0&lPImg=0&lPRedirect=0&lPRedirectUrl=&lPReguire=0&lPTxt=&masterIP=&mode=1&notification=0&notificationEnabled=1&productName=FRITZ\041Box+7490&protocol=23&protocolScnd=53&showGuest=false&showLandingpageImage=true&supportsRegulation=true&timeout=30&timeoutNoForcedOff=0&wpsActive=false&apply=&sid=$SID&lang=de&page=wGuest"

Gast WLAN wieder aus:
Bash:
#!/bin/bash

USERNAME="fritz1234"
PASSWORD="passwort"
URL=http://192.168.178.1

CHALLENGE=$(curl -s "$URL/login_sid.lua" \
  | sed -e 's/^.*<Challenge>//' -e 's/<\/Challenge>.*$//')

HASH=$(echo -n "$CHALLENGE-$PASSWORD" \
  | iconv -f ASCII -t UTF16LE \
  | md5sum \
  | awk '{print $1}')

SID=$(curl -s "$URL/login_sid.lua?sid=0000000000000000&username=$USERNAME&response=$CHALLENGE-$HASH" \
  | sed -e 's/^.*<SID>//' -e 's/<\/SID>.*$//')

curl "$URL/data.lua" \
  -X POST \
  --data-raw $"xhr=1&autoUpdate=0&guestAccessActive=off&isTimeoutActive=0&isOWEEnabled=0&activeNexusClient=false&apActive=1&apActiveScnd=0&boxType=box&defaultSsid=%5Bobject+Object%5D&deviceName=fritzbox&encryption=3&encryptionModes=%5Bobject+Object%5D%2C%5Bobject+Object%5D&guestGroupAccess=0&hideRepAutoUpdate=false&isEnabled=0&isHotspot=null&isIpClient=true&isMaster=false&isOWESupported=true&isPowerline=false&isRepeater=false&isolated=0&lPEnabled=0&lPImg=0&lPRedirect=0&lPRedirectUrl=&lPReguire=0&lPTxt=&masterIP=&mode=1&notification=0&notificationEnabled=1&productName=FRITZ\041Box+7490&protocol=23&protocolScnd=53&psk=12345678&showGuest=false&showLandingpageImage=true&ssid=test&supportsRegulation=true&timeout=30&timeoutNoForcedOff=0&wpsActive=false&apply=&sid=$SID=de&page=wGuest"

Achte auf das Ende des --data-raw Parts, dort ist &sid=cddfaf9273dd6b8a durch &sid=$SID ersetzt worden.
 
  • Like
Reaktionen: Schwarzseher
Kostenlos!

Statistik des Forums

Themen
248,849
Beiträge
2,302,795
Mitglieder
378,498
Neuestes Mitglied
Gerdemha