Skip to content

Ircama/py-snmp-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

py-snmp-sync

PyPI PyPI download month

Lightweight synchronous SNMPv1 Client implemented as a PySNMP wrapper optimized for sequential queries


Features

  • Synchronous API for straightforward SNMPv1 GET operations
  • Lightweight wrapper around PySNMP's core components
  • Can be used to interface Epson printers

Installation

pip install py-snmp-sync

Quick Start

from py_snmp_sync import (
    SyncUdpTransportTarget, sync_get_cmd, ObjectIdentity, CommunityData
)

target = SyncUdpTransportTarget(('demo.pysnmp.com', 161))
oid = ObjectIdentity('1.3.6.1.2.1.1.1.0')

# Perform SNMP GET request
error, status, index, binds = sync_get_cmd(
    CommunityData("public", mpModel=0),
    target,
    oid
)

if not error and not status:
    for name, value in binds:
        print(f"{name.prettyPrint()} = {value.prettyPrint()}")

Usage

Basic Configuration

transport = SyncUdpTransportTarget(
    (host, 161), 
    timeout=2, 
    retries=3
)
community = CommunityData("public", mpModel=0)  # SNMPv1
  • timeout: Response wait timeout (seconds)
  • retries: Number of retry attempts

Alternatively, community can be a string (e.g., "public").

oid can be an ObjectIdentity() (e.g., ObjectIdentity("SNMPv2-MIB", "sysDescr", 0) or ObjectIdentity('1.3.6.1.2.1.1.1.0')), or a string (e.g., "1.3.6.1.2.1.1.1.0").

sync_get_cmd() returns a tuple similar to pysnmp get_cmd(): (error_indication, error_status, error_index, var_binds) and supports multiple OIDs per request.

Batch operations

oids = [
    ObjectIdentity('1.3.6.1.2.1.1.1.0'),
    ObjectIdentity('1.3.6.1.2.1.1.5.0')
]

with SyncUdpTransportTarget(('device-ip', 161)) as transport:
    for oid in oids:
        error, status, _, binds = sync_get_cmd(community, transport, oid)
        # Handle response

Contributing

Contributions welcome! Please follow standard guidelines:

  • Fork the repository

  • Create a feature branch

  • Submit a Pull Request

License

EUPL-1.2 License - See LICENSE for details.

About

Synchronous SNMP implementation using PySNMP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages