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 asyncio I/O framework

Functionally similar to:

   $ snmpget -v1 -c public demo.snmplabs.com SNMPv2-MIB::sysDescr.0

   import asyncio
   from pysnmp.hlapi.asyncio import *


   @asyncio.coroutine
   def run():
       snmpEngine = SnmpEngine()
       errorIndication, errorStatus, errorIndex, varBinds = yield 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()


   asyncio.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 asyncio I/O framework

Functionally similar to:

   $ snmpbulkwalk -v3 -lnoAuthNoPriv -u usr-none-none -Cn0 -Cr50 
      demo.snmplabs.com  SNMPv2-MIB::system

   import asyncio
   from pysnmp.hlapi.asyncio import *


   @asyncio.coroutine
   def run(varBinds):
       snmpEngine = SnmpEngine()
       while True:
           (errorIndication,
            errorStatus,
            errorIndex,
            varBindTable) = yield 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 = asyncio.get_event_loop()
   loop.run_until_complete(
       run([ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr'))])
   )

"Download" script.

See also: library reference.
