# Walking operations

## 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.