Christian Manivong 7103cefc41 refactor!: rename get_dot1x_config to get_dot1x_ports
SwitchDriver and AccessPointDriver both declared get_dot1x_config, but they
meant different things and returned different shapes — Dot1XPortDict per port on
a switch, Dot1XConfigDict per SSID on an access point. A device that is both
could not satisfy both contracts.

napalm-device-types v1.0 names them apart. This is the switch side.

BREAKING CHANGE: get_dot1x_config is now get_dot1x_ports on NetgearPlusDriver.
2026-08-21 12:50:10 +07:00
2026-05-29 09:13:59 +02:00
2026-05-29 09:13:59 +02:00
2026-05-29 09:13:59 +02:00

napalm-netgear

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.8
NAPALM 4.0
Netmiko 4.0

Installation

pip install napalm-netgear

Or from source:

git clone https://github.com/napalm-automation-community/napalm-netgear
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: value or Key..... value notation depending on firmware generation — both are handled automatically

Development

pip install -e ".[dev]"
pytest tests/

License

Apache 2.0 — see LICENSE.

S
Description
No description provided
Readme
319 KiB
Languages
Python 100%