0de16e0b79efcfb2decb44c47ce49d3b591316d5
driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 12s
driver / types (pull_request) Successful in 42s
driver / test (3.10) (pull_request) Successful in 46s
driver / test (3.11) (pull_request) Successful in 46s
driver / test (3.12) (pull_request) Successful in 44s
driver / test (3.13) (pull_request) Successful in 38s
driver / lowest (pull_request) Successful in 23s
driver / security (pull_request) Successful in 45s
driver / build (pull_request) Successful in 22s
CI / driver (pull_request) Successful in 5m31s
driver / publish (pull_request) Skipped
Without one, uv's lowest-direct resolution installs netaddr 0.3.1, which has no IPAddress, and every test module fails to import. 0.7.19 has IPAddress, IPNetwork and AddrFormatError, and the tests pass at exactly the declared floors on Python 3.10.
napalm-netgear-switches
NAPALM community driver for Netgear Smart Managed and Netgear Plus Managed switches (GS108EPP, GS110TP, GS316EPP and compatible Smart Managed Pro series).
Tested devices
| Model | Series | Tested |
|---|---|---|
| GS110TP | Smart Managed Pro | ✅ |
| GS108EPP | Smart Managed Pro | ✅ |
| GS316EPP | Smart Managed Pro | ✅ |
Other models from the Netgear Smart Managed Pro series should work as well — contributions welcome.
Requirements
| Dependency | Minimum version |
|---|---|
| Python | 3.10 |
| NAPALM | 4.0 |
| napalm-device-types | 4.21.1 |
| Netmiko | 4.0 |
Installation
pip install napalm-netgear-switches
The name napalm-netgear on PyPI belongs to another project. The import package is
still napalm_netgear, and the drivers are still netgear_smart and netgear_plus.
Or from source:
git clone https://git.netork.io/NAPALM/napalm-netgear.git
cd napalm-netgear
pip install -e .
Quick start
from napalm import get_network_driver
driver = get_network_driver("netgear_smart")
with driver("192.168.0.239", "admin", "password") as device:
facts = device.get_facts()
print(facts)
Implemented getters
| Getter | Status | Notes |
|---|---|---|
get_facts |
✅ | model, hostname, os_version, serial, uptime |
get_interfaces |
✅ | status, speed, description, MTU |
get_interfaces_ip |
✅ | management VLAN IP/mask |
get_config |
✅ | running + startup |
get_arp_table |
✅ | |
get_mac_address_table |
✅ | |
get_lldp_neighbors |
✅ | |
get_lldp_neighbors_detail |
✅ | |
get_vlans |
✅ | |
get_environment |
✅ | CPU + memory only |
get_interfaces_counters |
✅ | |
get_users |
✅ | |
get_snmp_information |
✅ | |
get_ntp_servers |
✅ | |
get_ntp_peers |
✅ | same as servers |
get_route_to |
✅ | static/connected only |
ping |
✅ | |
cli |
✅ | |
is_alive |
✅ | |
load_merge_candidate |
✅ | |
load_replace_candidate |
✅ | additive — no atomic replace |
compare_config |
✅ | |
commit_config |
✅ | |
discard_config |
✅ | |
rollback |
✅ | session-scoped backup |
get_bgp_neighbors |
❌ | not applicable |
get_optics |
❌ | DDM not exposed via CLI |
get_ipv6_neighbors_table |
❌ | not exposed via CLI |
get_ntp_stats |
❌ | not exposed via CLI |
Optional arguments
| Argument | Default | Description |
|---|---|---|
port |
22 |
SSH port |
force_no_enable |
False |
Skip enable after login |
canonical_int_fmt |
False |
Use canonical interface names |
Any additional keyword arguments are forwarded to Netmiko.
CLI notes
- Netmiko device type:
netgear_prosafe - Prompt pattern:
(hostname) >/(hostname) #/(hostname) (Config)# - Interface naming:
0/1,0/2, … (slot/port); LAG channels:ch1,ch2, … - Config is persisted with
write memory - Key-value output uses
Key: valueorKey..... valuenotation depending on firmware generation — both are handled automatically
Development
The rules are in STANDARDS.md.
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest --cov
License
Apache 2.0 — see LICENSE.
Languages
Python
100%