GETBULK Operation#

async pysnmp.hlapi.v1arch.asyncio.bulkCmd(snmpDispatcher: SnmpDispatcher, authData: CommunityData, transportTarget: AbstractTransportTarget, nonRepeaters: int, maxRepetitions: int, *varBinds: ObjectType, **options) tuple[pysnmp.proto.errind.ErrorIndication | None, pysnmp.proto.rfc1902.Integer32 | str | int | None, pysnmp.proto.rfc1902.Integer32 | int | None, tuple[pysnmp.smi.rfc1902.ObjectType, ...]]#

Creates a generator to perform SNMP GETBULK query.

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

Parameters:
  • snmpDispatcher (SnmpDispatcher) – Class instance representing asynio-based asynchronous event loop and associated state information.

  • authData (CommunityData) – Class instance representing SNMPv1/v2c credentials.

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

  • nonRepeaters (int) – One MIB variable is requested in response for the first nonRepeaters MIB variables in request.

  • maxRepetitions (int) – maxRepetitions MIB variables are requested in response for each of the remaining MIB variables in the request (e.g. excluding nonRepeaters). Remote SNMP engine may choose lesser value than requested.

  • *varBinds (tuple of OID-value pairs or 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 False, unless ObjectType is present among varBinds in which case lookupMib gets automatically enabled.

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

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

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

  • varBindTable (tuple) – A sequence of sequences (e.g. 2-D array) of OID-value pairs in form of base SNMP types (if lookupMib is False) or ObjectType class instances (if lookupMib is True) a table of MIB variables returned in SNMP response, with up to maxRepetitions rows, i.e. len(varBindTable) <= maxRepetitions.

    For 0 <= i < len(varBindTable) and 0 <= j < len(varBinds), varBindTable[i][j] represents:

    • For non-repeaters (j < nonRepeaters), the first lexicographic successor of varBinds[j], regardless the value of i, or an ObjectType instance with the endOfMibView value if no such successor exists;

    • For repeaters (j >= nonRepeaters), the i-th lexicographic successor of varBinds[j], or an ObjectType instance with the endOfMibView value if no such successor exists.

    See RFC 3416#section-4.2.3 for details on the underlying GetBulkRequest-PDU and the associated GetResponse-PDU, such as specific conditions under which the server may truncate the response, causing varBindTable to have less than maxRepetitions rows.

Raises:

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

Examples

>>> import asyncio
>>> from pysnmp.hlapi.v1arch.asyncio import *
>>>
>>> async def run():
...     errorIndication, errorStatus, errorIndex, varBinds = await bulkCmd(
...         SnmpDispatcher(),
...         CommunityData('public'),
...         await UdpTransportTarget.create(('demo.pysnmp.com', 161)),
...         0, 2,
...         ObjectType(ObjectIdentity('SNMPv2-MIB', 'system'))
...     )
...     print(errorIndication, errorStatus, errorIndex, varBinds)
>>>
>>> asyncio.run(run())
(None, 0, 0, [[ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.pysnmp.com 4.1.3_U1 1 sun4m'))], [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.2.0')), ObjectIdentifier('1.3.6.1.4.1.424242.1.1'))]])
>>>