Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Informationen aus dem Webinterface einer Fritz!Box via Shellscript auslesen

Mitglied: colinardo

Für alle die die Daten aus dem Webinterface einer Fritz!Box via Shellscript auslesen müssen / wollen. Die Scripte wurden mit einer Fritz!Box 7390 mit Fritz!OS 6.03 getestet. Da sich aber viele Modelle von AVM im Webinterface gleichen, sollten die Scripte auch auf anderen Modellen der Fritz!Box-Serie funktionieren.

Steht man vor der Aufgabe bestimmte Informationen der Fritz!Box automatisiert abzufragen, hilft euch vielleicht dieses Script weiter.
back-to-topDas Script kennt folgende Variablen:
_BOXURL = Adresse der Fritzbox
_USERNAME = Benutzername (wenn keiner zum Login verwendet wird, diesem einen leeren String zuweisen)
_PASSWORD = Passwort des Webinterface
_REQUESTPAGE = Die angeforderte Unterseite der Fritz!Box (mit beginnendem slash "/")
_OUTPUTFILE = Dateinamen in dem die HTML-Seite gespeichert werden soll

back-to-topShell-Script
(getestet mit einer Fritz!Box 7390 mit FRITZ!OS 6.03, sollte aber auch mit anderen Modellen von AVM funktionieren)

Um an den Pfad zur entsprechenden Unterseite heran zu kommen, kann man z.B. die in Firefox integrierte Web-Konsole(STRG+SHIFT+K) oder das Plugin Firebug nutzen.
Der Inhalt der entsprechenden Fritz!Box-Seite wird nun in einer HTML-Datei gespeichert.
Diese lässt sich dann entweder weiter mit AWK,GREP etc. auf der Kommandozeile verarbeiten, oder man extrahiert die Daten z.B. mit einem PHP--Script.

back-to-topBeispiele

back-to-topScript 1: Ausfiltern des Inhalts eines HTML-Tags mit GREP auf der Kommandzeile
Im Beispiel wird alles zwischen diesen Tags ausgelesen: <table id="test"> ... </table> und auf der Kommandozeile ausgegeben. Zur weiteren Verarbeitung der HTML-Datei empfehle ich das Shell Utility awk bzw. gawk da dieses sehr mächtige String-Verarbeitung ermöglicht. Einarbeitung ist hier aber vorher Pflicht wenn man sich damit noch nicht auskennt.

back-to-topBeispiel 2: Informationen zur DSL-Qualität der Fritz!Box via Shell auslesen (nur für Firmware kleiner als 6.0 / für > 6.0 siehe Hinweis weiter unten)
Wenn eine Fritz!Box mit OS >= 6.0 eingesetzt wird muss in obigem Script Zeile 10-19 durch diesen Block ersetzt werden: (Achtung: nur getestet mit Firmware 6.03)

back-to-topScript 3: Syslog der Fritz!Box auslesen

back-to-topScript 4: Portfreigaben der Fritz!Box auslesen

back-to-topScript 5: Fritz!Box neu starten (Reboot)

back-to-topScript 6: Extrahieren von bestimmten Tags mit PHP (Kommentare im Code)

back-to-topAktuelle Login-Methode für Boxen mit aktuellen 6.5er Firmware-Versionen
Da sich in den 6.5er Versionen das Interface etwas verändert hat hier ein Login-Update für diese Versionen

Weitere Lösungen für die unterschiedlichen Seiten der Fritz!Box werden folgen ...

Grüße @colinardo
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
back-to-topÜberarbeitungen
Datum Änderung
27.04.2016 Login-Methode für Firmware-Version 6.5X hinzugefügt
16.06.2015 Script zum Reboot der Box hinzugefügt
17.07.2014 Änderungen für Firmware 6.0X hinzugefügt
28.07.2013 Script zum Auslesen der Protfreigaben hinzugefügt
27.08.2013 Zu Beispiel 2: Information zur DSL-Resync-Anzahl in den letzten 24h hinzugefügt
27.08.2013 Script zum Auslesen des Syslog der Fritz!Box via Shell hinzugefügt.

Content-Key: 214598

Url: https://administrator.de/contentid/214598

Ausgedruckt am: 06.12.2021 um 21:12 Uhr

Mitglied: aqui
aqui 26.08.2013, aktualisiert am 31.08.2013 um 16:19:33 Uhr
Goto Top
Klasse Anleitung !
Lässt sich sicher auch für andere WebGUI basierte Router anwenden, oder ?

Link ist im Raspberry_Mgmt-Server_Tutorial eingepflegt ;-) face-wink
Mitglied: colinardo
colinardo 26.08.2013 um 11:05:23 Uhr
Goto Top
Zitat von @aqui:
Klasse Anleitung !
Lässt sich sicher auch für andere WebGUI basierte Router anwenden, oder ?
Hi @aqui,
klar, man muss das Script halt an die Login-Methode des jeweiligen Herstellers anpassen. Dazu gibt es bereits einige Listen für Router im Web wie das mit curl auszusehen hat. Die Vorgehensweise nach dem Login ist ja die eigentliche Arbeit ;-) face-wink - mit Bash eine richtige Fusselsarbeit, da hat PHP in dieser Hinsicht schon seine Vorzüge, oder kennst du zufällig ein Tool für die Linux Kommandozeile mit dem sich ein HTML-DOM bequemer parsen lässt?

Grüße Uwe
Mitglied: aqui
aqui 26.08.2013 um 11:20:46 Uhr
Goto Top
Als alter CLI Knecht (mit Rancid usw.) nicht wirklich... ;-) face-wink
Mitglied: DRwindows97
DRwindows97 26.08.2013 um 14:52:42 Uhr
Goto Top
Funktioniert das obige Skript auch unter Fritzboxen der 7360er Reihe ?
Mitglied: colinardo
colinardo 26.08.2013 aktualisiert um 14:56:26 Uhr
Goto Top
Zitat von @DRwindows97:
Funktioniert das obige Skript auch unter Fritzboxen der 7360er Reihe ?
ausprobieren ! Hab hier keine Schublade mit allen Fritzboxen parat.
Kaputt machen kannst du damit nichts.
Grüße Uwe
Mitglied: DRwindows97
DRwindows97 26.08.2013 um 14:58:41 Uhr
Goto Top
Ok, ich werdes mal probieren.
Mitglied: colinardo
colinardo 28.08.2013 um 14:12:53 Uhr
Goto Top
--- Update ---:
Habe noch zwei Scripte zum Auslesen des Syslog und der Portfreigaben hinzugefügt
;-) face-wink Uwe
Mitglied: panguu
panguu 28.09.2014 aktualisiert um 15:20:57 Uhr
Goto Top
Hi,

danke für die scripts. Ich wollte feedback hierzu geben, da ich das gerade ausprobieren wollte.

Im Ursprungsscript gibt's wohl 'nen Tippfehler, der zu einer Fehlermeldung führt. Das taucht in der letzten Zeile (11) auf, der redirect der Ausgabe sollte auf >$_OUTPUTFILE gehen, da fehlt bei dir noch ein 'T' :-) face-smile

Dann wollte ich das zweite Skript ausprobieren, um DSL-Leitungsqualität auszulesen, jedoch schlägt das ebenso fehl (ich habe das Skript natürlich angepasst, weil ich >=OS6.x verwende). Wenn ich das Skript aufrufe erhalte ich:

awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
awk: line 1: syntax error at or near ,
Datenrate IN: kbit/s
Datenrate OUT: kbit/s
Latenz Empfangsrichtung: ms
Latenz Senderichtung: ms
Störabstandsmarge IN: db
Störabstandsmarge OUT: db
Leitungsdämpfung IN: db
Leitungsdämpfung OUT: db
DSL-Resync's (in 24h): mal

Grüße,
Pangu
Mitglied: colinardo
colinardo 28.09.2014 aktualisiert um 15:39:25 Uhr
Goto Top
Hallo Pangu,
Zitat von @panguu:
Im Ursprungsscript gibt's wohl 'nen Tippfehler, der zu einer Fehlermeldung führt. Das taucht in der letzten Zeile
(11) auf, der redirect der Ausgabe sollte auf >$_OUTPUTFILE gehen, da fehlt bei dir noch ein 'T' :-) face-smile
danke für die Rückmeldung ... ist oben korrigiert !
Dann wollte ich das zweite Skript ausprobieren, um DSL-Leitungsqualität auszulesen, jedoch schlägt das ebenso fehl (ich
habe das Skript natürlich angepasst, weil ich >=OS6.x verwende). Wenn ich das Skript aufrufe erhalte ich:
kann ich hier nicht bestätigen, ich habe es aber auch nur mit einer Fritz!Box 7390 mit Firmware 6.03 getestet, wie es mit der aktuellen 6.20 aussieht kann ich im Moment noch nicht sagen. Da kann sich immer mal was im Quellcode ändern, werde das bei Zeiten nachholen.

Ansonsten könnte es bei dir eher an der verwendeten awk-Version liegen, oder ein Zeichensatzfehler beim kopieren.

Grüße Uwe
Mitglied: aqui
aqui 29.09.2014 um 08:57:04 Uhr
Goto Top
Mit apt-get install gawk auf einem RasPi funktioniert es wunderbar ;-) face-wink
Mitglied: panguu
panguu 29.09.2014 um 09:50:34 Uhr
Goto Top
ich hatte "mawk" auf meinem RPi installiert, und damit ging's nicht. Müsste man evtl. den syntax anpassen, aber hab jetzt nicht groß danach geschaut. Mit dem angesprochenen "gawk" spuckt er schonmal keine Fehlermeldung aus, das klappt also. Allerdings krieg ich keine Werte zurückgeliefert, aber das kann wiederum daran liegen, dass das Script mit meiner FritzBox 6340 Cable nicht will, oder meine Firmware einfach ein klein wenig anders ist und das Script hierzu nicht passt.
Mitglied: colinardo
colinardo 29.09.2014 aktualisiert um 10:04:16 Uhr
Goto Top
Zitat von @panguu:
ich hatte "mawk" auf meinem RPi installiert, und damit ging's nicht. Müsste man evtl. den syntax anpassen,
aber hab jetzt nicht groß danach geschaut. Mit dem angesprochenen "gawk" spuckt er schonmal keine Fehlermeldung
aus, das klappt also. Allerdings krieg ich keine Werte zurückgeliefert, aber das kann wiederum daran liegen, dass das Script
mit meiner FritzBox 6340 Cable nicht will, oder meine Firmware einfach ein klein wenig anders ist und das Script hierzu nicht
passt.
yip das wird's sein musst du den HTML-Quellcode studieren, und dich ein bißchen in gawk einlesen ;-) face-wink
Mitglied: TimoMF
TimoMF 15.06.2015 um 13:25:04 Uhr
Goto Top
Das erste Script funktioniert auch auf der Fritz!BOX 7490 schon mal danke dafür.

Ich bin ansich auf der Suche nach einem Script welches die Fritzbox neu zu starten. Den über Telnet möchte ich das nicht machen, da die Box dem Provider gehört.

Leider bekomme ich das nicht hin.

im Quellcode finde ich da leider nichts was

<p>Klicken Sie hier, wenn Sie die FRITZ!Box neu starten wollen.</p>
<h4>Hinweis:</h4>
<p>Beim Neustart werden die Ereignismeldungen gelöscht. Alle Einstellungen der FRITZ!Box bleiben erhalten.</p>
<form action="/system/reboot.lua" method="POST">
<div id="btn_form_foot">
<input type="hidden" name="sid" value="577250e1160a0143">
<button type="submit" name="reboot">Neu starten</button>
</div>
</form>

Nachdem was ich da sehe müste die curl zeile doch so aussehen oder?

curl -s "${_BOXURL}${_REQUESTPAGE}" -d "sid=${_SID}" -d "reboot=Neu%20starten" >$_OUTPUTFILE

leider gibt die Fritz!box dann nichts zurück die output.html beibt leer.
Was mache ich da falsch?
Mitglied: colinardo
colinardo 15.06.2015 aktualisiert um 14:04:04 Uhr
Goto Top
Hallo erstmal @TimoMF und willkommen auf Administrator.de!
Das geht deshalb nicht weil der Reboot mit der Unterstützung von JavaScript und Ajax initiiert wird, bzw mit JavaScript eine xhr-id generiert wird mit welcher dann ein weiterer GET-Request an die Seite gesendet wird.
Muss ich mir mal die JavaScripts ansehen ob sich da was machen lässt.

Grüße Uwe
Mitglied: TimoMF
TimoMF 16.06.2015 um 18:43:37 Uhr
Goto Top
Das wäre sehr nett von dir.

Dann drücke ich mal die Daumen das es Klappt.
Mitglied: colinardo
colinardo 16.06.2015 aktualisiert um 20:08:50 Uhr
Goto Top
Kaum hat man mal die LUA-Scripte via Telnet auf der Box studiert, schon fällt einem die Lösung in die Hände :-D face-big-smile, hätte ich auch gleich drauf kommen können , oh man.
Es reicht ein einfacher GET mit Curl und den richtigen Parametern...
back-to-topReboot Fritz!Box (getestet mit einer 7390 und Firmware 6.23)
(Bitte beachte das der obige Code auch etwas angepasst wurde, da unsichtbare Zeichen in der SID Probleme gemacht haben)
p.s. und ja, der Pfad /reboot.lua ist korrrekt, denn es gibt zwei dieser Scripte, einmal im root und einmal unter /system.

Nun viel Spaß beim rebooten
Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Mitglied: TimoMF
TimoMF 16.06.2015 aktualisiert um 22:15:00 Uhr
Goto Top
Vielen Dank dir.

Mei der Fritz!BOX 7490 Firmware 6.20. Die Firmware ist die Aktuelle vom Provider freigegebene Version.

Ich Poste auch noch im anderem Post damit auch die jenigen die nach der 7490 suchen es finden.
Fals es lieber in den Haubtpost soll dort soll dann bitte meinen Post löschen.

Griß Timo
Mitglied: aqui
aqui 17.06.2015 um 09:57:56 Uhr
Goto Top
https://www.administrator.de/faq/32
dann nicht vergessen....
Mitglied: colinardo
colinardo 17.06.2015 aktualisiert um 10:43:48 Uhr
Goto Top
Zitat von @aqui:
https://www.administrator.de/faq/32
dann nicht vergessen....
Hallo @aqui, wenn ich das nur könnte, aber das ist eine Anleitung :-) face-smile

Grüße Uwe
Mitglied: LloidIrvyng
LloidIrvyng 13.12.2015 um 21:28:03 Uhr
Goto Top
Hi Uwe,

vielen Dank für die Veröffentlichung. In diesem Zuge gibt als Dankeschön auch gleich etwas zurück. Mit dem unten angehängten Skript ist es möglich, einen Computer via Wake-on-LAN aufzuwecken. Bei der Fritz!Box gibt es da den bekannten Button "Computer starten". Mein Grund ist folgender: Ich greife ab und zu auf meinen Router aus der Ferne zu und muss einen Rechner, welcher in dem Netz hängt, aufwecken. Bei meiner Fritz!Box (Fritz!Box 6320) ist es jedoch nicht ohne weiteres möglich, das Magic Packet über einen freigegeben Port zu broadcasten. Falls man natürlich schon direkt am Netzwerk hängt, bringt das Skript natürlich keinen wirklichen Mehrwert - da ist beispielsweise etherwake unter Linux bequemer.

Ich habe das Ganze unter Windows 10 und Debian 9 getestet. Sollte es nicht funktionieren, so sollte zuerst überprüft werden, ob der Rechner auch korrekt konfiguriert wurde und im Netzwerk via LAN verbunden ist. Je nach Einsatzgebiet könnte man das Skript natürlich noch erweitern.

Beste Grüße: Lloid Irvyng



Mitglied: netzdompteur
netzdompteur 28.02.2016 um 21:22:47 Uhr
Goto Top
Die Scripte sind ausgezeichnet. Ich beschäftige mich gerade mit den Portfreigaben.
Das Script4 zeigt schön, wie das geht, die Einstellungen auszulesen.
Nur hätte ich gerne, das ich auch Portfreigaben setzen kann bzw. vorhandene Portfreigaben aktivieren und deaktivieren kann.
Als Anregung hatte ich das Script Wake-OnLAN im Auge, wo zumindest die letzten Curl-Zeilen in abgewandelter Form verwendbar sein sollten.
Nur habe ich das nicht hinbekommen, wie der Post genau aussehen muss bzw. wie das mit CURL aussehen muss.
So viel habe ich rausgekriegt, das ein POST mit diesen Parametern gesendet wird:



Aktivert Regel 1-3 und 5


Deaktiviert die Regel 3 wieder.

Das Ganze wird dann wohl so geschickt:

Eine andere Option ist, die Regel komplett zu setzen. Dann sehen die Postdaten so aus:


Wie könnte da der Aufruf mit CURL aussehen ?
Dann fehlt nur noch, wie man die Portfreigabe wieder löscht.

Hat hier jemand eine Idee oder Hinweis ?
Mitglied: netzdompteur
netzdompteur 28.02.2016 um 22:48:04 Uhr
Goto Top
Kaum hat man mal das Problem niedergeschrieben, so kommt man auf die richtigen Tools und Lösung:

Der Aufruf muss so aussehen:


Rausbekommen mit Firebug, der wunderschön die Daten ausgibt, was im Post steht.
Mitglied: colinardo
colinardo 02.05.2016 aktualisiert um 15:21:33 Uhr
Goto Top
back-to-top---> Update
Login Methode für Firmware 6.5x hinzugefügt

Für alle die es interessiert. ich habe eine neue Anleitung für das Steuern der FritzBox mit Powershell und dem TR-064 Protokoll verfasst:

Powershell: FritzBox über TR-064 im Netzwerk konfigurieren und auslesen

Grüße Uwe
Heiß diskutierte Beiträge
question
WLAN Lösung mit 2 APs gesuchtEDVMan27Vor 1 TagFrageLAN, WAN, Wireless19 Kommentare

Hallo, sorry, wenn das schon wieder Jemand fragt Welche WLAN Lösungen mit Roaming gibt es? Der Router soll eine PFSense werden. Switche folgen dem WLAN-Konzept. ...

question
WSUSContent wird riesig gelöst DoskiasVor 20 StundenFrageWindows Update11 Kommentare

Hallo Mit-Admins, vielleicht bin ich grade nur zu Faul em-pie direkt anzuschreiben, aber vielleicht schreib ich auch hier, weil ich mir gut vorstellen kann, dass ...

tutorial
Link Aggregation (LAG) im NetzwerkaquiVor 1 TagAnleitungLAN, WAN, Wireless5 Kommentare

Einleitung Das Bündeln mehrerer, paralleler Links zu einem virtuellen Link mit Link Aggregation nach IEEE Standard IEEE 802.3ad (seit dem Jahr 2008 IEEE 802.1ax) bietet ...

question
Probleme beim Aktualisieren von Apps über Google Play Store im 1u1 DSL-Netz gelöst NominisVor 1 TagFrageDSL, VDSL11 Kommentare

Hallo, wir haben im Haushalt u.a. mehrere verschiedene Android-Handys (verschiedener Hersteller). Alle Handys haben im eigenen Heim-Netzwerk (DSL über 1&1) seit einigen Wochen Probleme bei ...

question
Hat Jemand eine Bezugsquelle für eine Gigaset N670?StefanKittelVor 1 TagFrageVoice over IP3 Kommentare

Hallo, hat Jemand eine Bezugsquelle für eine Gigaset N670? Vor Februar hat irgendwie keiner eine. PS: Die fast baugleichen Auerswald gehen nicht weil nicht kompatibel ...

question
Software für Echtzeit-BenachrichtigungGregor81Vor 5 StundenFrageMicrosoft11 Kommentare

Hallo zusammen, bin auf der Suche nach einer Software wo man auf die Client`s Benachrichtigungen verschicken kann, z.b. wenn der Exchange nicht geht oder wenn ...

question
POP Mail auf IMAP umstellenpain88Vor 1 TagFrageE-Mail6 Kommentare

Hallo, wir hatten bis vor kurzem einen Dienstleister der sich um unsere IT gekümmert hat. Wir haben eine neue Domain dazubekommen. Da er Schwierigkeiten hatte ...

question
Portfreigabe bei zwei Playstation an einer IP-Adressevafk18Vor 1 TagFrageRouter & Routing5 Kommentare

Ich bin mir nicht sicher, ob das hier auch reingehört, aber da mein Junior seinen Freund eingeladen hat, damit sie zu zwei mit je einer ...