gufo-snmp

Gufo SNMP is the accelerated Python SNMP library

https://github.com/gufolabs/gufo_snmp

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.7%) to scientific vocabulary

Keywords

async gufo networking pyo3 pypi python rust snmp snmpv3 typed
Last synced: 6 months ago · JSON representation ·

Repository

Gufo SNMP is the accelerated Python SNMP library

Basic Info
  • Host: GitHub
  • Owner: gufolabs
  • License: other
  • Language: Rust
  • Default Branch: master
  • Homepage:
  • Size: 1.78 MB
Statistics
  • Stars: 17
  • Watchers: 1
  • Forks: 2
  • Open Issues: 4
  • Releases: 13
Topics
async gufo networking pyo3 pypi python rust snmp snmpv3 typed
Created about 3 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Citation Codeowners Security

README.md

Gufo SNMP

The accelerated Python SNMP client library.

PyPi version Downloads Python Versions License Build Sponsors Ruff


Documentation: https://docs.gufolabs.com/gufo_snmp/

Source Code: https://github.com/gufolabs/gufo_snmp/


Gufo SNMP is the accelerated Python SNMP client library supporting both async and synchronous mode. It consists of a clean Python API for high-efficient BER parser and socket IO, implemented in the Rust language with PyO3 wrapper.

The querying of the single MIB key is a simple task:

``` py from gufo.snmp import SnmpSession

async with SnmpSession(addr="127.0.0.1", community="public") as session: r = await session.get("1.3.6.1.2.1.1.3.0") ```

And the blocking mode shares virtually the same API:

``` py from gufo.snmp.sync_client import SnmpSession

with SnmpSession(addr="127.0.0.1", community="public") as session: r = session.get("1.3.6.1.2.1.1.3.0") ```

Multiple keys can be queried by one request too:

py async with SnmpSession(addr="127.0.0.1", community="public") as session: r = await session.get_many(["1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.2.0"])

The querying of the MIB parts is also available with GetNext request:

py async with SnmpSession(addr="127.0.0.1", community="public") as session: async for oid, value in session.getnext("1.3.6.1.2.1.1"): ...

And with GetBulk request:

py async with SnmpSession(addr="127.0.0.1", community="public") as session: async for oid, value in session.getbulk("1.3.6.1.2.1.1"): ...

The .fetch() method allows to choose between .getnext() and .getbulk() automatically: py async with SnmpSession(addr="127.0.0.1", community="public") as session: async for oid, value in session.fetch("1.3.6.1.2.1.1"): ...

SNMPv3 shares same API and semantics:

py async with SnmpSession( addr="127.0.0.1", user=User( "user1", auth_key=Sha1Key(b"12345678"), priv_key=Aes128Key(b"87654321") ) ) as session: r = await session.get("1.3.6.1.2.1.1.3.0")

Gufo SNMP also allows to limit rate of outgoing requests to protect equipment from overloading:

py async with SnmpSession(addr="127.0.0.1", community="public", limit_rps=10) as session: async for oid, value in session.fetch("1.3.6.1.2.1.1"): ...

Gufo SNMP offers various tools for developers, including a wrapper to run a local instance of SNMP daemon:

py async with Snmpd(), SnmpSession(addr="127.0.0.1", port=10161) as session: r = await session.get("1.3.6.1.2.1.1.3.0")

Features

  • Clean async and blocking API.
  • SNMP v1/v2c/v3 support.
  • SNMP v3 User Security Model:
    • Authentication: HMAC-MD5-96, HMAC-SHA-96.
    • Privacy: DES, AES128.
    • Engine ID discovery.
  • High-performance.
  • Built with security in mind.
  • Zero-copy BER parsing.
  • Query rate limiting.
  • Full Python typing support.
  • Editor completion.
  • Well-tested, battle-proven code.
  • Thoroughly check compatibility with various network equipment.

Further Roadmap

  • SHA2 family of hashes.
  • AES256 encryption.
  • SNMP Trap and Inform collector.
  • Incorporation of the NOC's Compiled MIB infrastructure.

On Gufo Stack

This product is a part of Gufo Stack - the collaborative effort led by Gufo Labs. Our goal is to create a robust and flexible set of tools to create network management software and automate routine administration tasks.

To do this, we extract the key technologies that have proven themselves in the NOC and bring them as separate packages. Then we work on API, performance tuning, documentation, and testing. The NOC uses the final result as the external dependencies.

Gufo Stack makes the NOC better, and this is our primary task. But other products can benefit from Gufo Stack too. So we believe that our effort will make the other network management products better.

Owner

  • Name: Gufo Labs
  • Login: gufolabs
  • Kind: organization
  • Location: Italy

Gufo Labs is a private consulting company based in Milan, Italy.

Citation (CITATION.cff)

cff-version: 1.2.0
title: Gufo SNMP
message: >-
  If you use this software as part of a publication and wish to cite
  it, please use the metadata from this file.
type: software
authors:
  - name: Gufo Labs
    website: https://gufolabs.com/
  - name: Project's Contributors
    website: https://github.com/gufolabs/gufo_snmp
license: BSD-3-Clause

GitHub Events

Total
  • Create event: 6
  • Release event: 9
  • Issues event: 8
  • Watch event: 9
  • Delete event: 7
  • Issue comment event: 7
  • Push event: 83
  • Fork event: 1
Last Year
  • Create event: 6
  • Release event: 9
  • Issues event: 8
  • Watch event: 9
  • Delete event: 7
  • Issue comment event: 7
  • Push event: 83
  • Fork event: 1

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 113
  • Total Committers: 1
  • Avg Commits per committer: 113.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Dmitry Volodin dv@n****g 113
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 10
  • Total pull requests: 0
  • Average time to close issues: about 1 month
  • Average time to close pull requests: N/A
  • Total issue authors: 9
  • Total pull request authors: 0
  • Average comments per issue: 3.2
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 6
  • Pull requests: 0
  • Average time to close issues: about 2 months
  • Average time to close pull requests: N/A
  • Issue authors: 5
  • Pull request authors: 0
  • Average comments per issue: 1.5
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • aversant (2)
  • arthur-zzz (1)
  • nielsvanhooy (1)
  • PieceOfGood (1)
  • Stex1967 (1)
  • aztec102 (1)
  • mczerski (1)
  • wangxin688 (1)
  • maciejpankanin (1)
Pull Request Authors
Top Labels
Issue Labels
bug (6) enhancement (3)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 2,398 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 31
  • Total maintainers: 1
proxy.golang.org: github.com/gufolabs/gufo_snmp
  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.7%
Average: 5.9%
Dependent repos count: 6.0%
Last synced: 6 months ago
pypi.org: gufo-snmp

The accelerated Python SNMP client library

  • Versions: 16
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 2,398 Last month
Rankings
Dependent packages count: 10.1%
Downloads: 12.6%
Average: 21.2%
Dependent repos count: 21.6%
Forks count: 29.8%
Stargazers count: 31.9%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/build-docs.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
.github/workflows/package.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • actions/upload-artifact v2 composite
  • docker/setup-qemu-action v2 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/tests.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
Cargo.toml cargo
  • criterion 0.4 development
  • iai 0.1 development
  • nom 7.1
  • pyo3 0.20
  • rand 0.8
  • socket2 0.5
Dockerfile docker
  • python 3.12-slim-bullseye build
.requirements/build.txt pypi
  • setuptools-rust ==1.5.2
.requirements/docs.txt pypi
  • mkdocs-gen-files ==0.5.0
  • mkdocs-literate-nav ==0.6.0
  • mkdocs-material ==9.4.8
  • mkdocs-section-index ==0.3.8
  • mkdocstrings ==0.22.0
.requirements/ipython.txt pypi
  • ipython ==8.0.1
.requirements/lint.txt pypi
  • black ==23.1.0
  • mypy ==1.5.1
  • ruff ==0.1.5
  • types-PyYAML ==6.0.12.3
.requirements/test.txt pypi
  • PyYAML >=6.0 test
  • coverage ==7.3.2 test
  • pytest ==7.4.3 test
pyproject.toml pypi
setup.py pypi