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: 22.10.2021 um 20:10 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
Einfache Software für MitarbeiterinformationichbinwerichbinVor 1 TagFrageZusammenarbeit9 Kommentare

Guten Morgen Ich lese hier schon seit Jahren und bräuchte jetzt mal einen Hinweis. Ich weiss nicht ob Fragen nach Software beantwortet werden (Werbung?) aber ...

question
Netzwerk Neuaufbau - DHCP - VLANs gelöst SommelierVor 1 TagFrageWindows Server17 Kommentare

Hallo zusammen! Wir ziehen gerade unser Netzwerk neu auf, und ich wollte mir bei euch Rat einholen. Wir wollen verschiedene VLANs anlegen: Printer (172.16.20.0/24) Windowsumgebung ...

question
Netzwerkplan u. Kabelbelegung zeichnen? gelöst McLionVor 19 StundenFrageNetzwerke11 Kommentare

Hallo zusammen, ich suche irgendein Tool (am besten Open Source) um Netzwerkpläne zu zeichnen. Diese gibt es zwar wie Sand am Meer, aber mir geht's ...

question
Gefahren durch Nutzung von EOL Smartphones (end of life support)nachgefragtVor 19 StundenFrageSicherheit13 Kommentare

Hallo Administratoren, weil Freitag ist erlaube ich mir die Frage (brainstorming): Welche Gefahren hinsichtlich IT-Sicherheit und Datenschutz seht ihr bei der Nutzung von (eol) Smartphones, ...

question
Nebenstellenkreis von 2stellig auf 3stellig - was geschieht mit den bisherigen Rufnummerndeparture69Vor 23 StundenFrageTK-Netze & Geräte13 Kommentare

Hallo. Bei uns besteht für 2022 die Anforderung, deutlich mehr Bürotelefone in Einsatz zu bringen. Die Anzahl der Nebenstellen ist vertragsseitig derzeit aber auf 100 ...

question
Standort vs. Standort gelöst erikroVor 1 TagFrageWindows Server8 Kommentare

Moin, Hintergrund der Frage ist, dass ich für ein PS-Skript auf dem RDS wissen muss, wo der Client steht. Ich hatte zuerst die Idee, das ...

question
HA Konstrukt für Firmennetzwerk mit mehreren WAN VerbindungenITAllrounderVor 1 TagFrageLAN, WAN, Wireless19 Kommentare

Guten Morgen zusammen, ich stehe gerade vor der Überlegung unser Firmen Netzwerk etwas umzustrukturieren. Aktuell primäres Problem: Wir haben theoretisch 2x Sophos XG310 (nur 1x ...

question
Mitarbeiter Onboarding Trainings Program on Premise gelöst MineralwasserVor 1 TagFrageSonstige Systeme3 Kommentare

Guten Nachmittag Kennt jemand ein gutes Programm das als Web-Service läuft, jedoch am besten nicht in der Cloud um die Mitarbeiter zu schulen. Also wenn ...