GETNEXT Command#

async pysnmp.hlapi.asyncio.nextCmd(snmpEngine: SnmpEngine, authData: pysnmp.hlapi.auth.CommunityData | pysnmp.hlapi.auth.UsmUserData, transportTarget: AbstractTransportTarget, contextData: ContextData, *varBinds, **options) tuple[pysnmp.proto.errind.ErrorIndication, pysnmp.proto.rfc1902.Integer32 | int, pysnmp.proto.rfc1902.Integer32 | int, tuple[pysnmp.smi.rfc1902.ObjectType]]#

Creates a generator to perform SNMP GETNEXT query.

When iterator gets advanced by asyncio main loop, SNMP GETNEXT request is send (RFC 1905#section-4.2.2). The iterator yields asyncio.get_running_loop().create_future() which gets done whenever response arrives or error occurs.

Parameters:
  • snmpEngine (SnmpEngine) – Class instance representing SNMP engine.

  • authData (CommunityData or UsmUserData) – Class instance representing SNMP credentials.

  • transportTarget (UdpTransportTarget or Udp6TransportTarget) – Class instance representing transport type along with SNMP peer address.

  • contextData (ContextData) – Class instance representing SNMP ContextEngineId and ContextName values.

  • *varBinds (ObjectType) – One or more class instances representing MIB variables to place into SNMP request.

Other Parameters:

**options

Request options:

  • lookupMib - load MIB and resolve response MIB variables at the cost of slightly reduced performance. Default is True.

  • ignoreNonIncreasingOid - continue iteration even if response MIB variables (OIDs) are not greater then request MIB variables. Be aware that setting it to True may cause infinite loop between SNMP management and agent applications. Default is False.

Yields:
  • errorIndication (ErrorIndication) – True value indicates SNMP engine error.

  • errorStatus (str) – True value indicates SNMP PDU error.

  • errorIndex (int) – Non-zero value refers to varBinds[errorIndex-1]

  • varBinds (tuple) – A sequence of sequences (e.g. 2-D array) of ObjectType class instances representing a table of MIB variables returned in SNMP response. Inner sequences represent table rows and ordered exactly the same as varBinds in request. Response to GETNEXT always contain a single row.

Raises:

PySnmpError – Or its derivative indicating that an error occurred while performing SNMP operation.

Examples

>>> import asyncio
>>> from pysnmp.hlapi.asyncio import *
>>>
>>> async def run():
...     errorIndication, errorStatus, errorIndex, varBinds = await nextCmd(
...         SnmpEngine(),
...         CommunityData('public'),
...         UdpTransportTarget(('demo.pysnmp.com', 161)),
...         ContextData(),
...         ObjectType(ObjectIdentity('SNMPv2-MIB', 'system'))
...     )
...     print(errorIndication, errorStatus, errorIndex, varBinds)
>>>
>>> asyncio.run(run())
(None, 0, 0, [[ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'), DisplayString('Linux i386'))]])
>>>