Skip to main content

Python Netgear Switch Interface Library

Query and control all your Netgear switches — SNMP (managed), NSDP and HTTP web-UI (Plus) — behind one model-driven Python API and the ngsw CLI.

Status: early development. See docs/superpowers/specs/ for the design and docs/superpowers/plans/ for the implementation plans.

Installation

pip / uv (PyPI)

pip install python-netgear-switch-library
# or: uv add python-netgear-switch-library

Optional extras: [async] (pysnmp), [http] (httpx). The synchronous SNMP transport shells out to the net-snmp command-line tools, a system package (not a Python dependency):

sudo apt install snmp   # provides snmpget/snmpbulkwalk/snmpset

Debian / Ubuntu (apt)

Signed .deb packages for Debian trixie and sid are published to a GitHub Pages apt repository. Pick the line matching your suite:

sudo install -d -m0755 /etc/apt/keyrings
curl -fsSL https://mithro.github.io/python-netgear-switch-library/netgear-switch.gpg \
  | sudo tee /etc/apt/keyrings/netgear-switch.gpg > /dev/null

# trixie:
echo "deb [signed-by=/etc/apt/keyrings/netgear-switch.gpg] https://mithro.github.io/python-netgear-switch-library/trixie/ ./" \
  | sudo tee /etc/apt/sources.list.d/netgear-switch.list
# sid:
echo "deb [signed-by=/etc/apt/keyrings/netgear-switch.gpg] https://mithro.github.io/python-netgear-switch-library/sid/ ./" \
  | sudo tee /etc/apt/sources.list.d/netgear-switch.list

sudo apt update
sudo apt install python3-netgear-switch-library

This installs the netgear_switch library and the ngsw CLI, and pulls in the snmp net-snmp CLI tools automatically.

Either way, once installed run ngsw --help to see available commands.

Versioning

This project is a rolling release: the version is derived from git (0.0.postN / X.Y.postN), and every merge to main publishes a new version to PyPI and the apt repo. There are no tags or manual version bumps.

Mock switch daemons (ngsw serve)

The library ships in-repo virtual/mock switches. ngsw serve runs them as standalone, long-lived daemons on real sockets, so an external tool or library can point at a mock when real hardware is unavailable (CI, local development, demos).

# Serve one model (ephemeral ports), or several, or every registered model:
ngsw serve --model gsm7228ps
ngsw serve --model gsm7228ps --model gs305ep
ngsw serve --all

For each switch that comes up it prints the model, bind host, the actual bound port(s) (SNMP/NSDP over UDP, HTTP over TCP), and the SNMP community and HTTP password it accepts, then blocks until interrupted (Ctrl-C / SIGTERM), at which point every switch is stopped cleanly:

[gsm7228ps] host=127.0.0.1
    SNMP udp/36540
    HTTP tcp/42629
    community='public' http_password='password'
serving 1 mock switch(es); press Ctrl-C to stop

Point any tool at the printed port. For example, with the mock above serving SNMP on UDP 36540:

snmpwalk -v2c -c public 127.0.0.1:36540 1.3.6.1.2.1.1
# ...or the library's own CLI against the same mock:
ngsw --host 127.0.0.1 --model gsm7228ps --community public ports   # + your transport wiring

Options:

  • --model KEY — model to serve; repeatable. --all serves every registered model (see ngsw models).
  • --host IP — bind address (default 127.0.0.1). Pass 0.0.0.0 to expose the mock to other hosts on the network.
  • --community STR / --http-password STR — credentials the mock accepts (defaults public / password).
  • --port N / --http-port N — pin the SNMP/NSDP UDP port and the HTTP TCP port instead of using ephemeral ones. Because a pinned port is a single listener, these are only allowed when serving exactly one model; otherwise leave them unset and read the printed ephemeral ports.

Development

uv sync --all-extras
uv run pytest
uv run ruff check

License

Apache-2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_netgear_switch_library-0.0.post290.tar.gz (932.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file python_netgear_switch_library-0.0.post290.tar.gz.

File metadata

File hashes

Hashes for python_netgear_switch_library-0.0.post290.tar.gz
Algorithm Hash digest
SHA256 18da8f0f8667560982d972ae6ecc9727ab43110031b62fee23515193cdb09321
MD5 ef88dd9a8994730c91a5992c177a9301
BLAKE2b-256 ba9ecc00fe66b7825d6ab48934e69f221a5e528d60b0bbeaf966d3dccf1be4e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_netgear_switch_library-0.0.post290.tar.gz:

Publisher: publish-pypi.yml on mithro/python-netgear-switch-library

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_netgear_switch_library-0.0.post290-py3-none-any.whl.

File metadata

File hashes

Hashes for python_netgear_switch_library-0.0.post290-py3-none-any.whl
Algorithm Hash digest
SHA256 c4e97e9ff2d5ea94fc4e8791421edfc29e5e523de12a3ba97b245b1b63ae4a36
MD5 f66537219d3980fab92dc9da5beba105
BLAKE2b-256 36a1694a684b5540ea7f2a65e26553e7276503c8ff359138575d11d53f0e39c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_netgear_switch_library-0.0.post290-py3-none-any.whl:

Publisher: publish-pypi.yml on mithro/python-netgear-switch-library

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page