GETBULK command

async pysnmp.hlapi.asyncio.bulk_cmd(snmpEngine: Any, authData: Any, transportTarget: Any, contextData: Any, nonRepeaters: Any, maxRepetitions: Any, *varBinds: Any, **options: Any) → SnmpResponse

Perform SNMP GETBULK.

(RFC 1905 Section 4.2.3)

This issues one GETBULK and hands back what the agent answered. The agent fills maxRepetitions rows lexicographically, whether or not they belong to the subtree asked for, so a response routinely overshoots the end of a table by design. To walk a subtree and stop where it ends, with the overshoot trimmed, use bulk_walk_cmd().

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.

  • 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 (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.

  • ignoreValueErrors - what to do about a response value that will not cast to the syntax its MIB object declares. Default is None, which tolerates it and hands back the uncast value. False reports it as SmiError instead.

    A name the peer answered under a MIB this side has not loaded is a different matter and stays tolerated either way: it comes back as a bare OID, because raising would end a walk at the first such binding. Only lookupMib turns resolution off altogether.

Returns:

  • 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 ObjectType class instances representing 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:

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

Examples

>>> import asyncio
>>> from pysnmp.hlapi.asyncio import *
>>>
>>> async def run():
...     result_bulk = await bulk_cmd(
...         SnmpEngine(),
...         CommunityData('public'),
...         UdpTransportTarget(('localhost', 161)),
...         ContextData(),
...         0, 2,
...         ObjectType(ObjectIdentity('SNMPv2-MIB', 'system'))
...     )
...     errorIndication, errorStatus, errorIndex, varBinds = result_bulk
...     print(errorIndication, errorStatus, errorIndex, varBinds)
>>>
>>> # Run the coroutine against a live agent, for example:
>>> # asyncio.run(run())