Christian Manivong 0de16e0b79
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
fix(deps): a floor on netaddr the lowest CI job can use
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.
2026-10-23 08:46:45 +02:00
2026-05-29 09:13:59 +02:00

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: value or Key..... value notation 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.

S
Description
No description provided
Readme
536 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%