Various SNMP versions
*********************


SNMPv2c
=======

Send SNMP GET request using the following options:

   * with SNMPv1, community 'public'

   * over IPv4/UDP

   * to an Agent at demo.snmplabs.com:161

   * for two instances of SNMPv2-MIB::sysDescr.0 MIB object,

Functionally similar to:

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

   from pysnmp.hlapi.asyncore import *


   # noinspection PyUnusedLocal,PyUnusedLocal,PyUnusedLocal
   def cbFun(snmpEngine, sendRequestHandle, errorIndication,
             errorStatus, errorIndex, varBinds, cbCtx):
       if errorIndication:
           print(errorIndication)
           return
       elif errorStatus:
           print('%s at %s' % (errorStatus.prettyPrint(),
                               errorIndex and varBindTable[-1][int(errorIndex) - 1][0] or '?'))
           return
       else:
           for varBind in varBinds:
               print(' = '.join([x.prettyPrint() for x in varBind]))


   snmpEngine = SnmpEngine()

   getCmd(snmpEngine,
          CommunityData('public'),
          UdpTransportTarget(('demo.snmplabs.com', 161)),
          ContextData(),
          ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)),
          cbFun=cbFun)

   snmpEngine.transportDispatcher.runDispatcher()

"Download" script.


Walk whole MIB
==============

Send a series of SNMP GETNEXT requests using the following options:

* with SNMPv3, user 'usr-md5-none', MD5 authentication, no privacy

* over IPv4/UDP

* to an Agent at demo.snmplabs.com:161

* for all OIDs in IF-MIB

Functionally similar to:

   $ snmpwalk -v3 -lauthNoPriv -u usr-md5-none -A authkey1 -X privkey1 
      demo.snmplabs.com  IF-MIB::

   from pysnmp.hlapi.asyncore import *


   # noinspection PyUnusedLocal,PyUnusedLocal,PyUnusedLocal
   def cbFun(snmpEngine, sendRequestHandle, errorIndication,
             errorStatus, errorIndex, varBindTable, cbCtx):
       if errorIndication:
           print(errorIndication)
           return
       elif errorStatus:
           print('%s at %s' % (errorStatus.prettyPrint(),
                               errorIndex and varBindTable[-1][int(errorIndex) - 1][0] or '?'))
           return
       else:
           for varBindRow in varBindTable:
               for varBind in varBindRow:
                   print(' = '.join([x.prettyPrint() for x in varBind]))

       return True  # request lower layers to do GETNEXT and call us back


   snmpEngine = SnmpEngine()

   nextCmd(snmpEngine,
           UsmUserData('usr-md5-none', 'authkey1'),
           UdpTransportTarget(('demo.snmplabs.com', 161)),
           ContextData(),
           ObjectType(ObjectIdentity('SNMPv2-MIB', 'system')),
           ObjectType(ObjectIdentity('IF-MIB', 'ifTable')),
           cbFun=cbFun)

   snmpEngine.transportDispatcher.runDispatcher()

"Download" script.

See also: library reference.
