GETBULK Operation¶
- async pysnmp.hlapi.v3arch.asyncio.bulk_cmd(snmpEngine: SnmpEngine, authData: CommunityData | UsmUserData, transportTarget: AbstractTransportTarget, contextData: ContextData, nonRepeaters: int, maxRepetitions: int, *varBinds: ObjectType, **options) tuple[ErrorIndication, Integer32 | str | int, Integer32 | int, tuple[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 yieldsasyncio.get_running_loop().create_future()
which gets done whenever response arrives or error occurs.- Parameters:
snmpEngine (
SnmpEngine
) – Class instance representing SNMP engine.authData (
CommunityData
orUsmUserData
) – Class instance representing SNMP credentials.transportTarget (
UdpTransportTarget
orUdp6TransportTarget
) – 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.
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]
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 tomaxRepetitions
rows, i.e.len(varBindTable) <= maxRepetitions
.For
0 <= i < len(varBindTable)
and0 <= j < len(varBinds)
,varBindTable[i][j]
represents:For non-repeaters (
j < nonRepeaters
), the first lexicographic successor ofvarBinds[j]
, regardless the value ofi
, or anObjectType
instance with theendOfMibView
value if no such successor exists;For repeaters (
j >= nonRepeaters
), thei
-th lexicographic successor ofvarBinds[j]
, or anObjectType
instance with theendOfMibView
value if no such successor exists.
See RFC 3416#section-4.2.3 for details on the underlying
GetBulkRequest-PDU
and the associatedGetResponse-PDU
, such as specific conditions under which the server may truncate the response, causingvarBindTable
to have less thanmaxRepetitions
rows.
- Raises:
PySnmpError – Or its derivative indicating that an error occurred while performing SNMP operation.
Examples
>>> import asyncio >>> from pysnmp.hlapi.v3arch.asyncio import * >>> >>> async def run(): ... errorIndication, errorStatus, errorIndex, varBinds = await bulk_cmd( ... SnmpEngine(), ... CommunityData('public'), ... await UdpTransportTarget.create(('demo.pysnmp.com', 161)), ... ContextData(), ... 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'))]]) >>>