SNMP-PassPersist
This module is a SNMP passpersist backend for Net-SNMP.
The snmp_passpersist.PassPersist class present a convenient way to creare a MIB subtree and expose it to snmp via its passpersist protocol.
Two threads are used, one for talking with snmpd and a second that trigger the update process at a fixed interval.
The keyword 'DUMP' has been added to the protocol for testing purpose.
Installation
The easiest way is using pip :
pip install snmp_passpersist
Example
Usage example: in a file /path/to/your/script.py :
#!/usr/bin/python -u
import snmp_passpersist as snmp
def update():
pp.add_int('0.1', 123, "This is a label for this integer")
pp.add_str('0.2', "A string")
pp.add_oct('0.3', '01 00 1f 0b 00 0b') # MAC address as an octet string
pp=snmp.PassPersist(".1.3.6.1.3.53.8")
pp.start(update,30) # Every 30s
With the following line in Net-SNMP's snmpd.conf :
pass_persist .1.3.6.1.3.53.8.0 /path/to/your/script.py
A Real-world example is available here: https://github.com/nagius/cxm/blob/master/misc/snmp_xen.py
List of supported types and their helpers
| Type | Helper |
|---|---|
| Counter32 | add_cnt_32bit() |
| Counter64 | add_cnt_64bit() |
| GAUGE | add_gau() |
| INTEGER | add_int() |
| IPADDRESS | add_ip() |
| OBJECTID | add_oid() |
| OCTET | add_oct() |
| STRING | add_str() |
| TIMETICKS | add_tt() |
Special helpers
Labels
You can add a label with each entries, as an optional parameter to all add_*() helpers. This label is not used by Net-SNMP and is only useful for debugging with the DUMP keyword.
add_oid()
This helper allow you to add a simple OID string and give it the proper type. For example, calling this method with
pp.add_oid('.1.3.6.1.2.1.47','1.1.1.1.3.1','0.0')
where "0.0" represents SNMPv2-SMI::zeroDotZero.
This results in the following response when we walk this OID:
ENTITY-MIB::entPhysicalVendorType.1 = OID: SNMPv2-SMI::zeroDotZero
Set an attribute
You can register a helper to allow the recording of value from Net-SNMP.
def my_setter(oid, type, value):
print("Received %s with value %s for oid %s." % (type, value, oid))
return True
pp.register_setter('.1.3.6.1.3.53.8.0.4', my_setter)
Example for debugging :
$ /path/to/your/script.py
set
.1.3.6.1.3.53.8.0.4
INTEGER 987
Received INTEGER with value 987 for oid .1.3.6.1.3.53.8.0.4.
DONE
set
.1.3.6.1.3.53.8.0.1
STRING some-random-useless-string
not-writable
Another example that show the usage of the 'set' feature is available in the 'example/' directory.
Debugging example
Run the previous script in a shell and type the commands :
$ /path/to/your/script.py
PING
PONG
DUMP
{'0.1': {'type': 'INTEGER', 'value': '123'}}
get
.1.3.6.1.3.53.8
NONE
get
.1.3.6.1.3.53.8.0.1
.1.3.6.1.3.53.8.0.1
INTEGER
123
getnext
.1.3.6.1.3.53.8
.1.3.6.1.3.53.8.0.1
INTEGER
123
All commands are typed on two lines : get.1.3.6.1.3.53.8.0.1, except PING and DUMP.
Credits
Many thanks to all contributors.
Metadata
Release files for snmp-passpersist 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| snmp_passpersist-2.1.0.tar.gz | 6.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| snmp_passpersist-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.2 kB
Release files / snmp_passpersist-2.1.0.tar.gz
| Download URL | snmp_passpersist-2.1.0.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
72987dfd7464a6b8210d48d9f9c1071674673f2cc2e1a6a5a6b6226bd8e1e9ea
|
|
BLAKE2b-256 checksum How to use checksums |
125e2f3752076571359ec83addf12ecd70ff044fb10d1429b42aa418553de92b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.24.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.15
|
Release files / snmp_passpersist-2.1.0-py3-none-any.whl
| Download URL | snmp_passpersist-2.1.0-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e8aa9a01c2952ab3be8d9255f7ba276d43f253373a75d38fd435042bb3032e3
|
|
BLAKE2b-256 checksum How to use checksums |
13515fe7ebb2a1f53836e69c73c9b9e0014a75ebdf6a98d23f707d649d1912c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.24.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.15
|
Security for snmp-passpersist 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.