3b3469daa9ed2a190b2b8d5ee544dfc28ea95079
- get_system_config(): DSL-Leitungsqualität, Firmware-Status, DNS, NTP - get_device_warnings(): dsl_snr_low + firmware_update_available - get_port_forwards(): IPv6-Pinholes via WANIPv6Firewall1 (TCP6/UDP6) - get_wan_status(): robuste Service-Iteration, kein Crash bei "Auto"-Bitraten - get_interfaces(): pppoe0-Interface, Service-Guards für LAN/WAN, "connected"-Status - _to_float(): Helper für sichere TR-064 Feldkonvertierung - get_device_warnings() implementiert (war als Stub vorhanden) - Tests für alle neuen Methoden, PPPoE-Fixture Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
napalm-fritzbox
NAPALM community driver for AVM FritzBox routers (read-only, via TR-064).
Requirements
| Dependency | Minimum version |
|---|---|
| Python | 3.9 |
| NAPALM | 4.0 |
| fritzconnection | 1.13 |
Installation
pip install napalm-fritzbox
Or from source:
git clone https://github.com/napalm-automation-community/napalm-fritzbox
cd napalm-fritzbox
pip install -e .
Quick start
from napalm import get_network_driver
driver = get_network_driver("fritzbox")
with driver(
"192.168.178.1",
"user",
"pass",
optional_args={"use_tls": True},
) as d:
print(d.get_facts())
print(d.get_wan_status())
print(d.get_hosts())
Example
driver = get_network_driver("fritzbox")
d = driver("fritz.box", "user", "pass")
d.open()
print(d.get_wan_status())
print(d.get_port_forwards())
print(d.get_ssids())
print(d.get_wireless_clients())
d.close()
Optional arguments
| Argument | Default | Description |
|---|---|---|
use_tls |
True |
Use HTTPS (port 49443) instead of HTTP (port 49000) |
port |
49443 / 49000 |
Override the TR-064 port |
FritzBox serves TR-064 over HTTPS with a self-signed certificate; fritzconnection
does not verify it, so no separate verify option is needed.
Limitations
- Read-only: configuration management methods (
load_merge_candidate,commit_config, ...) are not implemented. get_nat_translations()is derived from the enabled port-forwarding rules — TR-064 does not expose a live connection-tracking table.get_vpn_tunnels()returns an empty dict — FritzOS does not expose VPN tunnel status via TR-064.channel_width,tx_powerandfrequencyinget_radio_status()are not available via TR-064 and are reported as0.
Development
pip install -e ".[dev]"
pytest tests/
CI
This project includes a GitHub Actions workflow that:
- Runs unit tests across Python 3.9–3.12
- Builds sdist and wheel
License
Apache 2.0 — see LICENSE.
Languages
Python
100%