Various SNMP versions¶
SNMPv1¶
Send SNMP GET request using the following options:
with SNMPv1, community ‘public’
over IPv4/UDP
to an Agent at demo.snmplabs.com:161
for an instance of SNMPv2-MIB::sysDescr.0 MIB object
Based on trollius I/O framework
Functionally similar to:
$ snmpget -v1 -c public demo.snmplabs.com SNMPv2-MIB::sysDescr.0
import trollius
from pysnmp.hlapi.asyncio import *
@trollius.coroutine
def run():
snmpEngine = SnmpEngine()
(errorIndication,
errorStatus,
errorIndex,
varBinds) = yield trollius.From(
getCmd(snmpEngine,
CommunityData('public', mpModel=0),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
snmpEngine.transportDispatcher.closeDispatcher()
trollius.get_event_loop().run_until_complete(run())
Download
script.
Bulk walk MIB¶
Send a series of SNMP GETBULK requests using the following options:
with SNMPv3, user ‘usr-none-none’, no authentication, no privacy
over IPv4/UDP
to an Agent at demo.snmplabs.com:161
for all OIDs past SNMPv2-MIB::system
run till end-of-mib condition is reported by Agent
based on trollius I/O framework
Functionally similar to:
$ snmpbulkwalk -v3 -lnoAuthNoPriv -u usr-none-none -Cn0 -Cr50 demo.snmplabs.com SNMPv2-MIB::system
import trollius
from pysnmp.hlapi.asyncio import *
@trollius.coroutine
def run(varBinds):
snmpEngine = SnmpEngine()
while True:
(errorIndication,
errorStatus,
errorIndex,
varBindTable) = yield trollius.From(
bulkCmd(snmpEngine,
UsmUserData('usr-none-none'),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
0, 50,
*varBinds)
)
if errorIndication:
print(errorIndication)
break
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBindRow in varBindTable:
for varBind in varBindRow:
print(' = '.join([x.prettyPrint() for x in varBind]))
varBinds = varBindTable[-1]
if isEndOfMib(varBinds):
break
snmpEngine.transportDispatcher.closeDispatcher()
loop = trollius.get_event_loop()
loop.run_until_complete(
run([ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr'))])
)
Download
script.
See also: library reference.