summaryrefslogtreecommitdiff
path: root/pysnmp/hlapi/asyncore/cmdgen.py
diff options
context:
space:
mode:
Diffstat (limited to 'pysnmp/hlapi/asyncore/cmdgen.py')
-rw-r--r--pysnmp/hlapi/asyncore/cmdgen.py981
1 files changed, 476 insertions, 505 deletions
diff --git a/pysnmp/hlapi/asyncore/cmdgen.py b/pysnmp/hlapi/asyncore/cmdgen.py
index 28c5954..b9be41b 100644
--- a/pysnmp/hlapi/asyncore/cmdgen.py
+++ b/pysnmp/hlapi/asyncore/cmdgen.py
@@ -10,520 +10,491 @@ from pysnmp.hlapi.asyncore.transport import *
from pysnmp.proto import rfc1905, errind
from pyasn1.type import univ, base
-__all__ = ['AsyncCommandGenerator']
-
-class AsyncCommandGenerator:
- """Creates asyncore-based SNMP Command Generator object.
-
- This is a high-level wrapper around pure Command Generator
- impementation that aims at simplyfing
- :py:class:`pysnmp.hlapi.SnmpEngine`'s Local Configuration
- Datastore (:RFC:`2271#section-3.4.2`) management. Typically,
- users instantiate `AsyncCommandGenerator` and call its
- commmand-specific methods passing them canned Security,
- Transport and SNMP Context parameters along with
- :py:class:`~pysnmp.smi.rfc1902.ObjectType` object carrying
- MIB variables to include with SNMP request. `AsyncCommandGenerator`
- will manage LCD by applying user-supplied configuratoin parameters
- and running requested operation.
-
- See :RFC:`3413#section-3.1` for more information on SNMP
- Command Generator purpose, design and supported operations.
+__all__ = ['getCmd', 'nextCmd', 'setCmd', 'bulkCmd', 'isEndOfMib']
+
+vbProcessor = CommandGeneratorVarBinds()
+lcd = CommandGeneratorLcdConfigurator()
+
+isEndOfMib = lambda x: not cmdgen.getNextVarBinds(x)[1]
+
+def getCmd(snmpEngine, authData, transportTarget, contextData,
+ varBinds, cbFun=None, cbCtx=None, lookupMib=True):
+ """Performs SNMP GET query.
+
+ Based on passed parameters, prepares SNMP GET packet
+ (:RFC:`1905#section-4.2.1`) and schedules its transmission by
+ I/O framework at a later point of time.
+
+ Parameters
+ ----------
+ snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
+ Class instance representing SNMP engine.
+
+ authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
+ Class instance representing SNMP credentials.
+
+ transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
+ Class instance representing transport type along with SNMP peer
+ address.
+
+ contextData : :py:class:`~pysnmp.hlapi.ContextData`
+ Class instance representing SNMP ContextEngineId and ContextName
+ values.
+
+ varBinds : tuple
+ A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
+ instances representing MIB variables to place into SNMP request.
+
+ Other Parameters
+ ----------------
+ cbFun : callable
+ user-supplied callable that is invoked to pass SNMP response
+ data or error to user at a later point of time.
+ cbCtx : object
+ user-supplied object passing additional parameters to/from
+ `cbFun`.
+ lookupMib : bool
+ `lookupMib` - load MIB and resolve response MIB variables at
+ the cost of slightly reduced performance.
+
+ Notes
+ -----
+ User-supplied `cbFun` callable must have the following call
+ signature:
+
+ * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
+ Class instance representing SNMP engine.
+ * sendRequestHandle (int): Unique request identifier. Can be used
+ for matching multiple ongoing requests with received responses.
+ * 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]`
+ * varBinds (tuple): A sequence of
+ :py:class:`~pysnmp.smi.rfc1902.ObjectType` class instances
+ representing MIB variables returned in SNMP response in exactly
+ the same order as `varBinds` in request.
+ * `cbCtx` : Original user-supplied object.
+
+ Returns
+ -------
+ sendRequestHandle : int
+ Unique request identifier. Can be used for matching received
+ responses with ongoing requests.
+
+ Raises
+ ------
+ PySnmpError
+ Or its derivative indicating that an error occurred while
+ performing SNMP operation.
+
+ Examples
+ --------
+ >>> from pysnmp.hlapi.asyncore import *
+ >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
+ ... print(errorIndication, errorStatus, errorIndex, varBinds)
+ >>>
+ >>> snmpEngine = SnmpEngine()
+ >>> getCmd(snmpEngine,
+ ... CommunityData('public'),
+ ... UdpTransportTarget(('demo.snmplabs.com', 161)),
+ ... ContextData(),
+ ... [ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0))],
+ ... cbFun=cbFun)
+ >>> snmpEngine.transportDispatcher.runDispatcher()
+ (None, 0, 0, [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m'))])
+ >>>
"""
- vbProcessor = CommandGeneratorVarBinds()
- lcd = CommandGeneratorLcdConfigurator()
-
- def getCmd(self, snmpEngine, authData, transportTarget, contextData,
- varBinds, cbInfo, lookupMib=True):
- """Performs SNMP GET query.
-
- Based on passed parameters, prepares SNMP GET packet
- (:RFC:`1905#section-4.2.1`) and schedules its transmission by
- I/O framework at a later point of time.
-
- Parameters
- ----------
- snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
- Class instance representing SNMP engine.
-
- authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
- Class instance representing SNMP credentials.
-
- transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
- Class instance representing transport type along with SNMP peer
- address.
-
- contextData : :py:class:`~pysnmp.hlapi.ContextData`
- Class instance representing SNMP ContextEngineId and ContextName
- values.
-
- varBinds : tuple
- A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
- instances representing MIB variables to place into SNMP request.
-
- cbInfo : tuple
-
- * `cbFun` - user-supplied callable that is invoked to pass
- SNMP response data or error to user at a later point of time.
- * `cbCtx` - user-supplied object passing additional parameters
- to/from `cbFun`. Default is `None`.
-
- Other Parameters
- ----------------
- lookupMib : bool
- `lookupMib` - load MIB and resolve response MIB variables at
- the cost of slightly reduced performance. Default is `True`.
-
- Notes
- -----
- User-supplied `cbFun` callable must have the following call
- signature:
-
- * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
- Class instance representing SNMP engine.
- * sendRequestHandle (int): Unique request identifier. Can be used
- for matching multiple ongoing requests with received responses.
- * 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]`
- * varBinds (tuple): A sequence of
- :py:class:`~pysnmp.smi.rfc1902.ObjectType` class instances
- representing MIB variables returned in SNMP response in exactly
- the same order as `varBinds` in request.
- * `cbCtx` : Original user-supplied object.
-
- Returns
- -------
- sendRequestHandle : int
- Unique request identifier. Can be used for matching received
- responses with ongoing requests.
-
- Raises
- ------
- PySnmpError
- Or its derivative indicating that an error occurred while
- performing SNMP operation.
-
- Examples
- --------
- >>> from pysnmp.hlapi.asyncore import *
- >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
- ... print(errorIndication, errorStatus, errorIndex, varBinds)
- >>>
- >>> snmpEngine = SnmpEngine()
- >>> g = AsyncCommandGenerator()
- >>> g.getCmd(snmpEngine,
- ... CommunityData('public'),
- ... UdpTransportTarget(('demo.snmplabs.com', 161)),
- ... ContextData(),
- ... ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)),
- ... (cbFun, None))
- >>> snmpEngine.transportDispatcher.runDispatcher()
- (None, 0, 0, [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m'))])
- >>>
-
- """
- def __cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBinds, cbCtx):
- lookupMib, cbFun, cbCtx = cbCtx
- return cbFun(
- snmpEngine,
- sendRequestHandle,
- errorIndication,
- errorStatus,
- errorIndex,
- self.vbProcessor.unmakeVarBinds(
- snmpEngine, varBinds, lookupMib
- ),
- cbCtx
- )
-
- (cbFun, cbCtx) = cbInfo
- addrName, paramsName = self.lcd.configure(
- snmpEngine, authData, transportTarget
- )
-
- return cmdgen.GetCommandGenerator().sendVarBinds(
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBinds, cbCtx):
+ lookupMib, cbFun, cbCtx = cbCtx
+ return cbFun(
snmpEngine,
- addrName,
- contextData.contextEngineId,
- contextData.contextName,
- self.vbProcessor.makeVarBinds(snmpEngine, varBinds),
- __cbFun,
- (lookupMib, cbFun, cbCtx)
- )
-
- def setCmd(self, snmpEngine, authData, transportTarget, contextData,
- varBinds, cbInfo, lookupMib=True):
- """Performs SNMP SET query.
-
- Based on passed parameters, prepares SNMP SET packet
- (:RFC:`1905#section-4.2.5`) and schedules its transmission by
- I/O framework at a later point of time.
-
- Parameters
- ----------
- snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
- Class instance representing SNMP engine.
-
- authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
- Class instance representing SNMP credentials.
-
- transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
- Class instance representing transport type along with SNMP peer
- address.
-
- contextData : :py:class:`~pysnmp.hlapi.ContextData`
- Class instance representing SNMP ContextEngineId and ContextName
- values.
-
- varBinds : tuple
- A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
- instances representing MIB variables to place into SNMP request.
-
- cbInfo : tuple
-
- * `cbFun` - user-supplied callable that is invoked to pass
- SNMP response data or error to user at a later point of time.
- * `cbCtx` - user-supplied object passing additional parameters
- to/from `cbFun`. Default is `None`.
-
- Other Parameters
- ----------------
- lookupMib : bool
- `lookupMib` - load MIB and resolve response MIB variables at
- the cost of slightly reduced performance. Default is `True`.
-
- Notes
- -----
- User-supplied `cbFun` callable must have the following call
- signature:
-
- * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
- Class instance representing SNMP engine.
- * sendRequestHandle (int): Unique request identifier. Can be used
- for matching multiple ongoing requests with received responses.
- * 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]`
- * varBinds (tuple): A sequence of
- :py:class:`~pysnmp.smi.rfc1902.ObjectType` class instances
- representing MIB variables returned in SNMP response in exactly
- the same order as `varBinds` in request.
- * `cbCtx` : Original user-supplied object.
-
- Returns
- -------
- sendRequestHandle : int
- Unique request identifier. Can be used for matching received
- responses with ongoing requests.
-
- Raises
- ------
- PySnmpError
- Or its derivative indicating that an error occurred while
- performing SNMP operation.
-
- Examples
- --------
- >>> from pysnmp.hlapi.asyncore import *
- >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
- ... print(errorIndication, errorStatus, errorIndex, varBinds)
- >>>
- >>> snmpEngine = SnmpEngine()
- >>> g = AsyncCommandGenerator()
- >>> g.setCmd(snmpEngine,
- ... CommunityData('public'),
- ... UdpTransportTarget(('demo.snmplabs.com', 161)),
- ... ContextData(),
- ... ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysContact', 0), 'info@snmplabs.com'),
- ... (cbFun, None))
- >>> snmpEngine.transportDispatcher.runDispatcher()
- (None, 0, 0, [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.4.0')), DisplayString('info@snmplabs.com'))])
- >>>
-
- """
- def __cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBinds, cbCtx):
- lookupMib, cbFun, cbCtx = cbCtx
- return cbFun(
- snmpEngine,
- sendRequestHandle,
- errorIndication,
- errorStatus,
- errorIndex,
- self.vbProcessor.unmakeVarBinds(
- snmpEngine, varBinds, lookupMib
- ),
- cbCtx
- )
-
- (cbFun, cbCtx) = cbInfo
- addrName, paramsName = self.lcd.configure(
- snmpEngine, authData, transportTarget
+ sendRequestHandle,
+ errorIndication,
+ errorStatus,
+ errorIndex,
+ vbProcessor.unmakeVarBinds(
+ snmpEngine, varBinds, lookupMib
+ ),
+ cbCtx
)
- return cmdgen.SetCommandGenerator().sendVarBinds(
+ addrName, paramsName = lcd.configure(
+ snmpEngine, authData, transportTarget
+ )
+
+ return cmdgen.GetCommandGenerator().sendVarBinds(
+ snmpEngine,
+ addrName,
+ contextData.contextEngineId,
+ contextData.contextName,
+ vbProcessor.makeVarBinds(snmpEngine, varBinds),
+ __cbFun,
+ (lookupMib, cbFun, cbCtx)
+ )
+
+def setCmd(snmpEngine, authData, transportTarget, contextData,
+ varBinds, cbFun=None, cbCtx=None, lookupMib=True):
+ """Performs SNMP SET query.
+
+ Based on passed parameters, prepares SNMP SET packet
+ (:RFC:`1905#section-4.2.5`) and schedules its transmission by
+ I/O framework at a later point of time.
+
+ Parameters
+ ----------
+ snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
+ Class instance representing SNMP engine.
+
+ authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
+ Class instance representing SNMP credentials.
+
+ transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
+ Class instance representing transport type along with SNMP peer
+ address.
+
+ contextData : :py:class:`~pysnmp.hlapi.ContextData`
+ Class instance representing SNMP ContextEngineId and ContextName
+ values.
+
+ varBinds : tuple
+ A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
+ instances representing MIB variables to place into SNMP request.
+
+ Other Parameters
+ ----------------
+ cbFun : callable
+ user-supplied callable that is invoked to pass SNMP response
+ data or error to user at a later point of time.
+ cbCtx : object
+ user-supplied object passing additional parameters to/from
+ `cbFun`.
+ lookupMib : bool
+ `lookupMib` - load MIB and resolve response MIB variables at
+ the cost of slightly reduced performance.
+
+ Notes
+ -----
+ User-supplied `cbFun` callable must have the following call
+ signature:
+
+ * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
+ Class instance representing SNMP engine.
+ * sendRequestHandle (int): Unique request identifier. Can be used
+ for matching multiple ongoing requests with received responses.
+ * 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]`
+ * varBinds (tuple): A sequence of
+ :py:class:`~pysnmp.smi.rfc1902.ObjectType` class instances
+ representing MIB variables returned in SNMP response in exactly
+ the same order as `varBinds` in request.
+ * `cbCtx` : Original user-supplied object.
+
+ Returns
+ -------
+ sendRequestHandle : int
+ Unique request identifier. Can be used for matching received
+ responses with ongoing requests.
+
+ Raises
+ ------
+ PySnmpError
+ Or its derivative indicating that an error occurred while
+ performing SNMP operation.
+
+ Examples
+ --------
+ >>> from pysnmp.hlapi.asyncore import *
+ >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
+ ... print(errorIndication, errorStatus, errorIndex, varBinds)
+ >>>
+ >>> snmpEngine = SnmpEngine()
+ >>> setCmd(snmpEngine,
+ ... CommunityData('public'),
+ ... UdpTransportTarget(('demo.snmplabs.com', 161)),
+ ... ContextData(),
+ ... [ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysContact', 0), 'info@snmplabs.com')],
+ ... cbFun=cbFun)
+ >>> snmpEngine.transportDispatcher.runDispatcher()
+ (None, 0, 0, [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.4.0')), DisplayString('info@snmplabs.com'))])
+ >>>
+
+ """
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBinds, cbCtx):
+ lookupMib, cbFun, cbCtx = cbCtx
+ return cbFun(
snmpEngine,
- addrName,
- contextData.contextEngineId,
- contextData.contextName,
- self.vbProcessor.makeVarBinds(snmpEngine, varBinds),
- __cbFun,
- (lookupMib, cbFun, cbCtx)
- )
-
- def nextCmd(self, snmpEngine, authData, transportTarget, contextData,
- varBinds, cbInfo, lookupMib=True):
- """Performs SNMP GETNEXT query.
-
- Based on passed parameters, prepares SNMP GETNEXT packet
- (:RFC:`1905#section-4.2.2`) and schedules its transmission by
- I/O framework at a later point of time.
-
- Parameters
- ----------
- snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
- Class instance representing SNMP engine.
-
- authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
- Class instance representing SNMP credentials.
-
- transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
- Class instance representing transport type along with SNMP peer
- address.
-
- contextData : :py:class:`~pysnmp.hlapi.ContextData`
- Class instance representing SNMP ContextEngineId and ContextName
- values.
-
- varBinds : tuple
- A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
- instances representing MIB variables to place into SNMP request.
-
- cbInfo : tuple
-
- * `cbFun` - user-supplied callable that is invoked to pass
- SNMP response data or error to user at a later point of time.
- * `cbCtx` - user-supplied object passing additional parameters
- to/from `cbFun`. Default is `None`.
-
- Other Parameters
- ----------------
- lookupMib : bool
- `lookupMib` - load MIB and resolve response MIB variables at
- the cost of slightly reduced performance. Default is `True`.
-
- Notes
- -----
- User-supplied `cbFun` callable must have the following call
- signature:
-
- * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
- Class instance representing SNMP engine.
- * sendRequestHandle (int): Unique request identifier. Can be used
- for matching multiple ongoing requests with received responses.
- * 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]`
- * varBinds (tuple): A sequence of sequences (e.g. 2-D array) of
- :py:class:`~pysnmp.smi.rfc1902.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.
- * `cbCtx` : Original user-supplied object.
-
- Returns
- -------
- sendRequestHandle : int
- Unique request identifier. Can be used for matching received
- responses with ongoing requests.
-
- Raises
- ------
- PySnmpError
- Or its derivative indicating that an error occurred while
- performing SNMP operation.
-
- Examples
- --------
- >>> from pysnmp.hlapi.asyncore import *
- >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
- ... print(errorIndication, errorStatus, errorIndex, varBinds)
- >>>
- >>> snmpEngine = SnmpEngine()
- >>> g = AsyncCommandGenerator()
- >>> g.nextCmd(snmpEngine,
- ... CommunityData('public'),
- ... UdpTransportTarget(('demo.snmplabs.com', 161)),
- ... ContextData(),
- ... ObjectType(ObjectIdentity('SNMPv2-MIB', 'system')),
- ... (cbFun, None))
- >>> snmpEngine.transportDispatcher.runDispatcher()
- (None, 0, 0, [ [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m'))] ])
- >>>
-
- """
- def __cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBindTable, cbCtx):
- lookupMib, cbFun, cbCtx = cbCtx
- return cbFun(
- snmpEngine,
- sendRequestHandle,
- errorIndication,
- errorStatus,
- errorIndex,
- [ self.vbProcessor.unmakeVarBinds(snmpEngine, varBindTableRow, lookupMib) for varBindTableRow in varBindTable ],
- cbCtx
- )
-
- (cbFun, cbCtx) = cbInfo
- addrName, paramsName = self.lcd.configure(
- snmpEngine, authData, transportTarget
+ sendRequestHandle,
+ errorIndication,
+ errorStatus,
+ errorIndex,
+ vbProcessor.unmakeVarBinds(
+ snmpEngine, varBinds, lookupMib
+ ),
+ cbCtx
)
- return cmdgen.NextCommandGenerator().sendVarBinds(
+
+ addrName, paramsName = lcd.configure(
+ snmpEngine, authData, transportTarget
+ )
+
+ return cmdgen.SetCommandGenerator().sendVarBinds(
+ snmpEngine,
+ addrName,
+ contextData.contextEngineId,
+ contextData.contextName,
+ vbProcessor.makeVarBinds(snmpEngine, varBinds),
+ __cbFun,
+ (lookupMib, cbFun, cbCtx)
+ )
+
+def nextCmd(snmpEngine, authData, transportTarget, contextData,
+ varBinds, cbFun=None, cbCtx=None, lookupMib=True):
+ """Performs SNMP GETNEXT query.
+
+ Based on passed parameters, prepares SNMP GETNEXT packet
+ (:RFC:`1905#section-4.2.2`) and schedules its transmission by
+ I/O framework at a later point of time.
+
+ Parameters
+ ----------
+ snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
+ Class instance representing SNMP engine.
+
+ authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
+ Class instance representing SNMP credentials.
+
+ transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
+ Class instance representing transport type along with SNMP peer
+ address.
+
+ contextData : :py:class:`~pysnmp.hlapi.ContextData`
+ Class instance representing SNMP ContextEngineId and ContextName
+ values.
+
+ varBinds : tuple
+ A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
+ instances representing MIB variables to place into SNMP request.
+
+ Other Parameters
+ ----------------
+ cbFun : callable
+ user-supplied callable that is invoked to pass SNMP response
+ data or error to user at a later point of time.
+ cbCtx : object
+ user-supplied object passing additional parameters to/from
+ `cbFun`.
+ lookupMib : bool
+ `lookupMib` - load MIB and resolve response MIB variables at
+ the cost of slightly reduced performance.
+
+ Notes
+ -----
+ User-supplied `cbFun` callable must have the following call
+ signature:
+
+ * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
+ Class instance representing SNMP engine.
+ * sendRequestHandle (int): Unique request identifier. Can be used
+ for matching multiple ongoing requests with received responses.
+ * 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]`
+ * varBinds (tuple): A sequence of sequences (e.g. 2-D array) of
+ :py:class:`~pysnmp.smi.rfc1902.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.
+ * `cbCtx` : Original user-supplied object.
+
+ Returns
+ -------
+ sendRequestHandle : int
+ Unique request identifier. Can be used for matching received
+ responses with ongoing requests.
+
+ Raises
+ ------
+ PySnmpError
+ Or its derivative indicating that an error occurred while
+ performing SNMP operation.
+
+ Examples
+ --------
+ >>> from pysnmp.hlapi.asyncore import *
+ >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
+ ... print(errorIndication, errorStatus, errorIndex, varBinds)
+ >>>
+ >>> snmpEngine = SnmpEngine()
+ >>> nextCmd(snmpEngine,
+ ... CommunityData('public'),
+ ... UdpTransportTarget(('demo.snmplabs.com', 161)),
+ ... ContextData(),
+ ... [ObjectType(ObjectIdentity('SNMPv2-MIB', 'system'))],
+ ... cbFun=cbFun)
+ >>> snmpEngine.transportDispatcher.runDispatcher()
+ (None, 0, 0, [ [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m'))] ])
+ >>>
+
+ """
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbCtx):
+ lookupMib, cbFun, cbCtx = cbCtx
+ return cbFun(
snmpEngine,
- addrName,
- contextData.contextEngineId, contextData.contextName,
- self.vbProcessor.makeVarBinds(snmpEngine, varBinds),
- __cbFun,
- (lookupMib, cbFun, cbCtx)
+ sendRequestHandle,
+ errorIndication,
+ errorStatus,
+ errorIndex,
+ [ vbProcessor.unmakeVarBinds(snmpEngine, varBindTableRow, lookupMib) for varBindTableRow in varBindTable ],
+ cbCtx
)
- def bulkCmd(self, snmpEngine, authData, transportTarget, contextData,
- nonRepeaters, maxRepetitions, varBinds, cbInfo,
- lookupMib=True):
- """Performs SNMP GETBULK query.
-
- Based on passed parameters, prepares SNMP GETBULK packet
- (:RFC:`1905#section-4.2.3`) and schedules its transmission by
- I/O framework at a later point of time.
-
- Parameters
- ----------
- snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
- Class instance representing SNMP engine.
-
- authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
- Class instance representing SNMP credentials.
-
- transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
- Class instance representing transport type along with SNMP peer
- address.
-
- contextData : :py:class:`~pysnmp.hlapi.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 : tuple
- A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
- instances representing MIB variables to place into SNMP request.
-
- cbInfo : tuple
-
- * `cbFun` - user-supplied callable that is invoked to pass
- SNMP response data or error to user at a later point of time.
- * `cbCtx` - user-supplied object passing additional parameters
- to/from `cbFun`. Default is `None`.
-
- Other Parameters
- ----------------
- lookupMib : bool
- `lookupMib` - load MIB and resolve response MIB variables at
- the cost of slightly reduced performance. Default is `True`.
-
- Notes
- -----
- User-supplied `cbFun` callable must have the following call
- signature:
-
- * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
- Class instance representing SNMP engine.
- * sendRequestHandle (int): Unique request identifier. Can be used
- for matching multiple ongoing requests with received responses.
- * 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]`
- * varBinds (tuple): A sequence of sequences (e.g. 2-D array) of
- :py:class:`~pysnmp.smi.rfc1902.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. Number of rows might be less or equal
- to `maxRepetitions` value in request.
- * `cbCtx` : Original user-supplied object.
-
- Returns
- -------
- sendRequestHandle : int
- Unique request identifier. Can be used for matching received
- responses with ongoing requests.
-
- Raises
- ------
- PySnmpError
- Or its derivative indicating that an error occurred while
- performing SNMP operation.
-
- Examples
- --------
- >>> from pysnmp.hlapi.asyncore import *
- >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
- ... print(errorIndication, errorStatus, errorIndex, varBinds)
- >>>
- >>> snmpEngine = SnmpEngine()
- >>> g = AsyncCommandGenerator()
- >>> g.bulkCmd(snmpEngine,
- ... CommunityData('public'),
- ... UdpTransportTarget(('demo.snmplabs.com', 161)),
- ... ContextData(),
- ... 0, 2,
- ... ObjectType(ObjectIdentity('SNMPv2-MIB', 'system')),
- ... (cbFun, None))
- >>> snmpEngine.transportDispatcher.runDispatcher()
- (None, 0, 0, [ [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.snmplabs.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')] ])
- >>>
-
- """
- def __cbFun(snmpEngine, sendRequestHandle,
- errorIndication, errorStatus, errorIndex,
- varBindTable, cbCtx):
- lookupMib, cbFun, cbCtx = cbCtx
- return cbFun(
- snmpEngine,
- sendRequestHandle,
- errorIndication,
- errorStatus,
- errorIndex,
- [ self.vbProcessor.unmakeVarBinds(snmpEngine, varBindTableRow, lookupMib) for varBindTableRow in varBindTable ],
- cbCtx
- )
-
- (cbFun, cbCtx) = cbInfo
- addrName, paramsName = self.lcd.configure(
- snmpEngine, authData, transportTarget
- )
- return cmdgen.BulkCommandGenerator().sendVarBinds(
+ addrName, paramsName = lcd.configure(
+ snmpEngine, authData, transportTarget
+ )
+ return cmdgen.NextCommandGenerator().sendVarBinds(
+ snmpEngine,
+ addrName,
+ contextData.contextEngineId, contextData.contextName,
+ vbProcessor.makeVarBinds(snmpEngine, varBinds),
+ __cbFun,
+ (lookupMib, cbFun, cbCtx)
+ )
+
+def bulkCmd(snmpEngine, authData, transportTarget, contextData,
+ nonRepeaters, maxRepetitions, varBinds,
+ cbFun=None, cbCtx=None, lookupMib=True):
+ """Performs SNMP GETBULK query.
+
+ Based on passed parameters, prepares SNMP GETBULK packet
+ (:RFC:`1905#section-4.2.3`) and schedules its transmission by
+ I/O framework at a later point of time.
+
+ Parameters
+ ----------
+ snmpEngine : :py:class:`~pysnmp.hlapi.SnmpEngine`
+ Class instance representing SNMP engine.
+
+ authData : :py:class:`~pysnmp.hlapi.CommunityData` or :py:class:`~pysnmp.hlapi.UsmUserData`
+ Class instance representing SNMP credentials.
+
+ transportTarget : :py:class:`~pysnmp.hlapi.asyncore.UdpTransportTarget` or :py:class:`~pysnmp.hlapi.asyncore.Udp6TransportTarget`
+ Class instance representing transport type along with SNMP peer
+ address.
+
+ contextData : :py:class:`~pysnmp.hlapi.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 : tuple
+ A sequence of :py:class:`~pysnmp.smi.rfc1902.ObjectType` class
+ instances representing MIB variables to place into SNMP request.
+
+ Other Parameters
+ ----------------
+ cbFun : callable
+ user-supplied callable that is invoked to pass SNMP response
+ data or error to user at a later point of time.
+ cbCtx : object
+ user-supplied object passing additional parameters to/from
+ `cbFun`.
+ lookupMib : bool
+ `lookupMib` - load MIB and resolve response MIB variables at
+ the cost of slightly reduced performance.
+
+ Notes
+ -----
+ User-supplied `cbFun` callable must have the following call
+ signature:
+
+ * snmpEngine (:py:class:`~pysnmp.hlapi.SnmpEngine`):
+ Class instance representing SNMP engine.
+ * sendRequestHandle (int): Unique request identifier. Can be used
+ for matching multiple ongoing requests with received responses.
+ * 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]`
+ * varBinds (tuple): A sequence of sequences (e.g. 2-D array) of
+ :py:class:`~pysnmp.smi.rfc1902.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. Number of rows might be less or equal
+ to `maxRepetitions` value in request.
+ * `cbCtx` : Original user-supplied object.
+
+ Returns
+ -------
+ sendRequestHandle : int
+ Unique request identifier. Can be used for matching received
+ responses with ongoing requests.
+
+ Raises
+ ------
+ PySnmpError
+ Or its derivative indicating that an error occurred while
+ performing SNMP operation.
+
+ Examples
+ --------
+ >>> from pysnmp.hlapi.asyncore import *
+ >>> def cbFun(snmpEngine, sendRequestHandle, errorIndication, errorStatus, errorIndex, varBinds, cbCtx):
+ ... print(errorIndication, errorStatus, errorIndex, varBinds)
+ >>>
+ >>> snmpEngine = SnmpEngine()
+ >>> bulkCmd(snmpEngine,
+ ... CommunityData('public'),
+ ... UdpTransportTarget(('demo.snmplabs.com', 161)),
+ ... ContextData(),
+ ... 0, 2,
+ ... [ObjectType(ObjectIdentity('SNMPv2-MIB', 'system'))],
+ ... cbFun=cbFun)
+ >>> snmpEngine.transportDispatcher.runDispatcher()
+ (None, 0, 0, [ [ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.1.0')), DisplayString('SunOS zeus.snmplabs.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')] ])
+ >>>
+
+ """
+ def __cbFun(snmpEngine, sendRequestHandle,
+ errorIndication, errorStatus, errorIndex,
+ varBindTable, cbCtx):
+ lookupMib, cbFun, cbCtx = cbCtx
+ return cbFun(
snmpEngine,
- addrName,
- contextData.contextEngineId,
- contextData.contextName,
- nonRepeaters, maxRepetitions,
- self.vbProcessor.makeVarBinds(snmpEngine, varBinds),
- __cbFun,
- (lookupMib, cbFun, cbCtx)
+ sendRequestHandle,
+ errorIndication,
+ errorStatus,
+ errorIndex,
+ [ vbProcessor.unmakeVarBinds(snmpEngine, varBindTableRow, lookupMib) for varBindTableRow in varBindTable ],
+ cbCtx
)
+
+ addrName, paramsName = lcd.configure(
+ snmpEngine, authData, transportTarget
+ )
+ return cmdgen.BulkCommandGenerator().sendVarBinds(
+ snmpEngine,
+ addrName,
+ contextData.contextEngineId,
+ contextData.contextName,
+ nonRepeaters, maxRepetitions,
+ vbProcessor.makeVarBinds(snmpEngine, varBinds),
+ __cbFun,
+ (lookupMib, cbFun, cbCtx)
+ )