Files
napalm-fritzbox/README.md
T
Christian Manivong d0008ece9a
driver / standard (pull_request) Successful in 18s
driver / lint (pull_request) Successful in 14s
driver / types (pull_request) Successful in 1m5s
driver / lowest (pull_request) Failing after 23s
driver / security (pull_request) Successful in 1m5s
driver / build (pull_request) Successful in 40s
driver / test (3.12) (pull_request) Successful in 5m59s
driver / test (3.13) (pull_request) Successful in 5m55s
CI / driver (pull_request) Failing after 6m38s
driver / publish (pull_request) Skipped
chore: Python 3.12 is the floor (NAPALM/driver-standard#6)
netOrk runs every driver in its own containers on Python 3.12, so 3.10
and 3.11 are no longer supported or tested. requires-python, mypy and
ruff move to 3.12, along with what ruff's pyupgrade rules then rewrite.
2026-10-27 10:18:56 +01:00

96 lines
2.2 KiB
Markdown

# napalm-fritzbox
NAPALM community driver for **AVM FritzBox** routers (read-only, via TR-064).
## Requirements
| Dependency | Minimum version |
|---|---|
| Python | 3.12 |
| NAPALM | 4.0 |
| napalm-device-types | 4.21.1 |
| fritzconnection | 1.13 |
## Installation
```bash
pip install napalm-fritzbox
```
Or from source:
```bash
git clone https://git.netork.io/NAPALM/napalm-fritzbox
cd napalm-fritzbox
pip install -e .
```
## Quick start
```python
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
```python
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_power` and `frequency` in `get_radio_status()` are not
available via TR-064 and are reported as `0`.
## Development
The rules are in [STANDARDS.md](https://git.netork.io/NAPALM/driver-standard/src/branch/main/STANDARDS.md).
```bash
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest --cov
```
CI ([.gitea/workflows/ci.yml](.gitea/workflows/ci.yml)) calls the shared workflow of
the NAPALM driver standard: ruff, mypy, the tests on Python 3.12 and 3.13, bandit,
pip-audit and a build check.
## License
Apache 2.0 — see [LICENSE](LICENSE).