Geräte im heimischen Fritzbox-Netzwerk anzeigen
Ich muss regelmäßig prüfen, welche Geräte im Heimnetzwerk – und manchmal auch im Gastnetzwerk – online sind. Auch für mein Home Assistant-Setup ist es wichtig, schnell einen Überblick zu bekommen, welche Geräte erreichbar sind. Mit der Fritzbox-GUI geht das, aber bei vielen Geräten wird die Browser-Seite langsam und unübersichtlich. Also ein Grund, die Kommandozeile zu bemühen.
Der naheliegende erste Versuch war arp -a. Das gibt eine Liste aller Geräte im Netzwerk – dummerweise stimmen die Namen oft nicht. Der Grund: arp liefert nur IP- und MAC-Adressen, die Hostnamen kommen vom lokalen DNS-Server – also von der Fritzbox. Diese speichert Hostnamen als PTR-Records, aber nur wenn das Gerät bei der DHCP-Anmeldung seinen Namen mitsendet. Viele Geräte machen das nicht, oder ändern den Namen zwischendurch – die PTR-Records bleiben dann veraltet. Es kann durchaus passieren, dass ein iPhone als „Michels-Watch" angezeigt wird, weil die Adresse früher mal zu jenem anderen Gerät gehörte.
nmap -sn war der nächste Versuch. Ähnliches Problem: nmap nutzt ebenfalls DNS-Lookups für die Hostnamen – gleiche Quelle, gleiche Fehler, viele falsche Namen.
Dann habe ich herausbekommen, dass die Fritzbox eine TR-064 SOAP-API hat, die direkt auf die internen „FriendlyNames“ zugreift – also die manuell in der Fritz-GUI festgelegten Namen. Diese werden nicht durch DNS überschrieben und bleiben auch nach Neustarts etc. stabil.
Die API liefert alle nötigen Daten, eine kleine Shell-Funktion ruft sie ab und formatiert die Ausgabe.
Das Ergebnis ist eine zsh-Funktion netlist, die in einer Sekunde eine saubere Übersicht sortiert nach IP-Adressen gibt. Die letzte Spalte (Net) zeigt an, ob sich das Gerät im Gastnetzwerk befindet:
Optional (wie im folgenden Screenshot) mit den Flags -v, das den Gerätehersteller (Vendor) aus der nmap OUI-Datenbank heraussucht, und/oder -n, das nach Hostname sortiert. Der Vendor-Lookup nutzt die offizielle IEEE-Datenbank, die beim ersten Aufruf automatisch heruntergeladen wird
Und so geht’s:
Öffnen Sie ~/.zshrc in Ihrem Editor, z B. mit nano: nano ~/.zshrc. Fügen Sie am Ende der Datei die Credentials ein – diese müssen vor der netlist-Funktion stehen und angepasst werden:
export FRITZ_IP="192.168.X.X"
export FRITZ_USER="FRITZ_USER"
export FRITZ_PASS="IHR_PASSWORT"
🔒 Dieser Artikel ist kostenpflichtig
Einmalig 0,99 € – dauerhaft freigeschaltet auf diesem Gerät.
Artikel kaufen (0,99 €)Schon mal eine App bei mir gekauft? Artikel kostenlos freischalten…
Ähnliche Beiträge:
Momente (13) - Ligurien im Dezember Draw Things-Tipp: Mehr Details mit The Detail Slider-LoRA
Kommentare:
Bei den Kommentaren handelt es sich um fremde Inhalte, die sich „esse est percipi“ nicht zueigen macht. Verantwortlich für den Inhalt eines Kommentars ist der jeweilige Verfasser.
Lieber Michael,
vielen Dank für diese spannende Idee. Ich hab’s gleich mal probiert und krieg es leider nicht hin:
In meinem nano gibt es kein ^S … ich hab’s dann mal mit ^O probiert, damit wird die Datei schonmal gespeichert. Ich vermute mal, dass es einen sinnvolleren Ort gibt, wohin ich sie speichern sollte, als mein Benutzerverzeichnis? Wenn ich dann source ~/.zshrc eingebe passiert … nix.
Vielleicht hast du ja einen einfachen Hinweis, bin im Terminal nicht so fingerfertig …
Liebe Grüße, Daniel
Sorry, natürlich ist es ^O – ich selber mache alles mit BBedit. ^S war die Macht der Gewohnheit ;)
Das Benutzerverzeichnis ist schon richtig, da gehört die .zshrc hin. Wenn du alles so gemacht hast wie oben und anschließend den Befehl netlist im Terminal eingibst, bekommst du die Liste der Geräte im Netzwerk sortiert nach IP-Adressen. Mit netlist -n wird die Liste nach Gerätenamen sortiert, und mit netlist -v wird der Hersteller angezeigt. netlist -v -n funktioniert auch.
Das klappt allerdings nur unter der Voraussetzung, dass deine Standard-Shell zsh ist. Wenn du echo $SHELL ins Terminal eingibst, sollte da so etwas wie /bin/zsh stehen…
Lieber Michael,
danke für deine Rückmeldung.
Ich hab’s zwischenzeitlich auf zwei Fritzboxen in zwei unterschiedlichen Netzen ausprobiert (Credentials jeweils angepasst), aber irgendwie krieg ich’s nicht zum Laufen. Meine Shell ist zsh, ich bin auf OS26. ChatGPT bietet mit großem Enthusiasmus die unterschiedlichsten Änderungsvorschläge und ist sich sicher, dass Umbrüche im Skript dafür sorgen, dass das erste CURL nicht richtig funktioniert (wofür die Fehlermeldung „curl: (2) no URL specified
“ spricht). Diese hab ich allerdings inzwischen alle rausgenommen.
Später kommt noch „netlist:17: no such file or directory: https://192.168.20.1:49443/upnp/control/hosts“ … irgendetwas ist nicht richtig, aber ich lasse das nun erstmal liegen und schaue vielleicht zu einem anderen Zeitpunkt nochmal hinein.
Vielen Dank, dass du mich dazu gebracht hast, nach langer Zeit mal wieder einen Ausflug ins Terminal zu machen, das sollte ich häufiger tun
Herzliche Grüße, Daniel
Hallo Daniel, das mit den Zeilenumbrüchen hat mich das Script hier auf der Seite noch mal überprüfen lassen – und ich musste leider feststellen, dass mein Blog-CMS beim Sichern eines Eintrags sämtliche Escape-Zeichen entfernt. Tut mir leid! Ich habe mein CMS korrigiert, jetzt bleiben Escapes beim Speichern erhalten – oben sind sie jetzt auch zu sehen.
Noch mal sorry!
Hallo Michael,
das Script funktioniert auch unter FreeBSD sehr gut. Danke fürs Teilen.
Gruß,
Peter
Nun hat es geklappt, vielen Dank!
Kommentar schreiben:
FAQ (Häufig gestellte Fragen)
Kommentare:
- Michael Preidel zu Pasta dell’Orto
- Stefan zu Pasta dell’Orto
- Michael Preidel zu CookieCrumble Testflight jetzt auch für macOS
- Götz zu CookieCrumble Testflight jetzt auch für macOS
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Henning zu Harbor – Sicherer Hafen [Testflight]
Schlagwörter

