Fritzbox per Kommandozeile

Wie lautet gleich wieder das Kennwort für das Gast-WLAN? Wie ist die öffentliche IP-Adresse? Router wie die Fritzbox verwalten so viele Infos, geben sie aber nur her, wenn man sich durch die Konfigurationsoberfläche klickt. Oder?

Gut Informierte wissen wahrscheinlich, dass sich die Fritzbox-Konfiguration durch PHP-Scripts auslesen und in vielen Belangen sogar steuern lässt. Theoretisch genügen dafür relativ komplizierte Befehle der Download- und Upload-Tools wget und curl. Komfortabler ist das Paket miniupnpc mit seinem Programm upnpc – dies allerdings mit eng begrenzter Reichweite. Das umfangreichste PHP-Projekt zur Fritzbox-Steuerung ist die Sammlung fb_tools (Fritzbox-Tools) von Michael Engelke. Was man damit alles anstellen kann, zeigt dieser Beitrag.

Fritzbox-Abfragen: Der Einblick in das Systemprotokoll und die Traffic-Statistik („Online-Zähler“) gehört zu einfacheren Kommandos der Fritzbox-Tools.

Definition und Umfang

Die Fritzbox-Tools sind eine umfangreiche Sammlung von PHP-Scripts, die über Terminalbefehle ausgelöst werden. Je nach Befehl kann man Informationen aus der Fritzbox auslesen, Konfigurationsbackups anlegen und wieder zurückschreiben und viele Einzelfunktionen von außen starten, so etwa Smarthome-Aktoren von AVM oder die LED-Anzeige der Fritzbox.

Um Missverständnissen vorzubeugen: Die Fritzbox-Tools können – mit einigen wenigen Ausnahmen – nicht mehr als das, was ein zutrittsberechtigter Fritzbox-Nutzer im Normalfall auf der Konfigurationsoberfläche erledigt. Ihre Reichweite ist sogar begrenzter als die Fritzbox-Oberfläche, weil AVM nicht alle Funktionen für PHP-Scripting offenlegt (so offenbar der gesamte Bereich WLAN/Funknetz). Der entscheidende Vorteil der Fritzbox-Tools ist es, dass Informationen wie die öffentliche IP-Adresse, die aktuelle Anrufliste oder der Online-Zähler mit einem vorbereiteten Terminalbefehl in zwei Sekunden ausgelesen sind. Und mehr noch: Als Terminalbefehl lassen sich solche Aktionen auch automatisch erledigen, etwa als Cronjob oder Autostart auf einem beliebigen Linuxsystem im Netzwerk.

Einfache Installation auf Debian/Ubuntu

Die Fritzbox-Tools laufen im Prinzip auf jedem Betriebssystem. Weil aber PHP installiert sein muss, ist die Einrichtung auf Linux am einfachsten. Auf jedem Update-gepflegten Linux wird eine PHP-Version 7.x für die Konsole („cli“) nämlich bereits vorliegen. Außerdem gibt es mindestens eine interessante Funktion der Tools, die Open SSL benötigt – und auch dies ist Standard unter Linux. Für Debian/Ubuntu-basierte Distributionen genügt daher der Download des winzigen DEB-Pakets „fb-tools.deb“ von www.mengelke.de/Projekte/FritzBox-Tools (nur 90 KB) und die Installation per Doppelklick oder im Terminal:

sudo dpkg -i fb-tools.deb

Für Linux-affine Windows-Nutzer ist genau derselbe Weg zu empfehlen, sofern sie ein Debian oder Ubuntu im „Windows Subsystem für Linux“ (WSL) verwenden. Dies ist wesentlich einfacher, als der Anleitung für die Installation unter Windows zu folgen.

Erste Umschau: Auf den typischen Hilfeschalter „-h“

fb_tools -h

meldet die Toolsammlung die verfügbaren Hauptbefehle (Modes). Einige dieser Befehle besitzen wieder diverse Unterbefehle (Funktionen), wovon Sie sich mit

fb_tools konfig -h
fb_tools smarthome -h

überzeugen können. Es gibt nun einige einfache Modes (ohne Unterbefehle), die ohne jede Benutzer-Authentifizierung sofort Antworten liefern:

fb_tools boxinfo
fb_tools systemstatus

Damit erhalten Sie die Basisdaten über Modell, Hardwarerevision, Provider, Laufzeit, Neustarts. Ebenfalls selbsterklärend ist die Abfrage der öffentlichen IP-Adresse:

fb_tools getip

Bei anderen Modes wie „traffic, anrufliste, led, konfig, smarthome“ werden Sie hingegen keinen Erfolg haben. Das Tool meldet dann „Anmeldung fehlgeschlagen, SID.lua ist ungültig“. Das bedeutet, dass Sie sich für diese Modes und Funktionen an der Fritzbox anmelden müssen.

Anmeldung und Fritzbox-Einstellung

Alle wirklich interessanten Funktionen setzen eine Anmeldung voraus. Die verläuft aber denkbar einfach innerhalb des Kommandos:

fb_tools Geh3im@fritz.box anrufliste

Dies genügt, falls der Router nur durch ein allgemeines Passwort geschützt ist. Wenn Sie in der Fritzbox Benutzerkonten angelegt haben, benötigen Sie folgende Syntax

fb_tools sepp:Geh3im@fritz.box anrufliste

mit der Abfolge „[Konto:Kennwort@Gerät]“. Und noch ein akademisches Detail: Wer sich in mehreren Netzen befindet, muss den angesprochenen Router statt mit „fritz.box“ genau adressieren (was aber auch sonst nie schadet):

fb_tools sepp:Geh3im@192.168.178.1 anrufliste

Mit dieser Syntax und somit korrekter Anmeldung sind aber auf jüngeren Fritzboxen immer noch nicht sämtliche Funktionen realisierbar. Die Lösung dafür liegt in der Fritzbox-Konfiguration unter „System → Fritz!Box-Benutzer → Zusätzliche Bestätigung → Ausführung bestimmter Einstellungen und Funktionen zusätzlich bestätigen”. Die Option ist standardmäßig aktiviert und verhindert einige Kommandos der Fritzbox-Tools. Es ist Ermessensfrage, ob man dies dauerhaft abschalten will. Zumindest vorübergehend ist das nötig, um einen der interessantesten Befehle abzusetzen:

fb_tools sepp:Geh3im@192.168.178.1 konfig export-decrypt

Dieses Kommando liest im Klartext sämtliche Verbindungsdaten aus, unter anderem Provider-Zugangsdaten, WLAN-Passwörter, Telefonie-Passwörter, Internet- und MyFritz-Onlinezugangsdaten. Diese Daten sind in dieser Form und Vollständigkeit weder über die Fritzbox-Oberfläche noch in der (verschlüsselten) Konfigurationssicherung erreichbar.

Weitere Beispiele

Mit dem Mode „konfig“ können Sie interaktiv oder automatisiert Konfgurationssicherungen des Routers ausführen:

fb_tools sepp:Geh3im@192.168.178.1 konfig export fritz.export

Mit „konfig import“ lässt sich eine Sicherung später wieder zurückspeichern.

Der einfache Mode „traffic“ hat keine Unterfunktionen und spuckt nach

fb_tools […] traffic

die Zusammenfassung aus, die in der Konfigurationsoberfläche unter „Internet -> Online-Monitor -> Online-Zähler“ zu finden ist. Der Mode „Ereignisse“ bietet das Systemprotokoll („System -> Ereignisse“) und hat dabei genau dieselben optionalen Filter wie die Oberfläche:

fb_tools […]ereignisse filter:system

Einfache, aber mindestens im zweiten Fall interessante Aktionen lösen folgende Kommandos aus:

fb_tools […] led off
fb_tools […] reconnect

Die LED-Leuchten lassen mit „on“ jederzeit wieder aktivieren. „reconnect“ darf als weiteres Highlight der Toolsammlung gelten, weil die Fritzbox-Oberfläche zur Neuverbindung nur den kompletten und zeitaufwändigen Gerätestart vorsieht – obendrein verbuddelt unter „System -> Sicherung -> Neustart“. Dass „reconnect“ die Fritzbox tatsächlich in Sekunden neu verbindet, können Sie dem Systemprotokoll entnehmen („System -> Ereignisse“ oder das entsprechende Kommando der fb_tools).

Besonders ergiebig ist der Mode „SmartHome“, der mit

fb_tools sepp:Geh3im@192.168.178.1 smarthome list

alle Smarthome-Komponenten („Aktoren“) mit AIN-Kennziffer anzeigt (AIN=Aktor Identifikationsnummer). Einschränkend ist zu bemerken, dass solche Steuerung eine homogene und ausschließliche Nutzung von AVM-Produkten voraussetzt. Da der Verfasser solche Funksteckdosen und Sensoren nicht nutzt, vertrauen wir an dieser Stelle auf Aussagen des Tool-Entwicklers und von Kommentaren im Web.

Auf Basis der mit „smarthome list“ ermittelten Gerätekennungen, lässt sich die betreffende Hardware dann detailliert steuern: Ein AVM-Thermostat mit der AIN „18“ kann dann etwa mit folgendem Befehl

fb_tools […] smarthome set 18 20

auf exakt 20 Grad gesetzt werden oder mit

fb_tools […] smarthome set 18 spar

auf eine in der Fritzbox („Smart Home -> Geräteverwaltung“) hinterlegte Spartemperatur.