255 lines
9.7 KiB
Python
255 lines
9.7 KiB
Python
#
|
|
# This file is part of pysnmp software.
|
|
#
|
|
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
|
# License: http://pysnmp.sf.net/license.html
|
|
#
|
|
# All code in this file belongs to obsolete, compatibility wrappers.
|
|
# Never use interfaces below for new applications!
|
|
#
|
|
from pysnmp.hlapi.asyncore import *
|
|
from pysnmp.hlapi.asyncore import sync
|
|
from pysnmp.hlapi.varbinds import *
|
|
from pysnmp.hlapi.lcd import *
|
|
from pyasn1.compat.octets import null
|
|
from pyasn1.type import univ
|
|
|
|
__all__ = ['AsynCommandGenerator', 'CommandGenerator', 'MibVariable']
|
|
|
|
MibVariable = ObjectIdentity
|
|
|
|
|
|
class AsynCommandGenerator(object):
|
|
_null = univ.Null('')
|
|
|
|
vbProcessor = CommandGeneratorVarBinds()
|
|
lcd = CommandGeneratorLcdConfigurator()
|
|
|
|
def __init__(self, snmpEngine=None):
|
|
if snmpEngine is None:
|
|
self.snmpEngine = SnmpEngine()
|
|
else:
|
|
self.snmpEngine = snmpEngine
|
|
|
|
self.mibViewController = self.vbProcessor.getMibViewController(self.snmpEngine)
|
|
|
|
def __del__(self):
|
|
self.lcd.unconfigure(self.snmpEngine)
|
|
|
|
def cfgCmdGen(self, authData, transportTarget):
|
|
return self.lcd.configure(self.snmpEngine, authData, transportTarget)
|
|
|
|
def uncfgCmdGen(self, authData=None):
|
|
return self.lcd.unconfigure(self.snmpEngine, authData)
|
|
|
|
# compatibility stub
|
|
def makeReadVarBinds(self, varNames):
|
|
return self.makeVarBinds([(x, self._null) for x in varNames])
|
|
|
|
def makeVarBinds(self, varBinds):
|
|
return self.vbProcessor.makeVarBinds(self.snmpEngine, varBinds)
|
|
|
|
def unmakeVarBinds(self, varBinds, lookupNames, lookupValues):
|
|
return self.vbProcessor.unmakeVarBinds(
|
|
self.snmpEngine, varBinds, lookupNames or lookupValues
|
|
)
|
|
|
|
def getCmd(self, authData, transportTarget, varNames, cbInfo,
|
|
lookupNames=False, lookupValues=False,
|
|
contextEngineId=None, contextName=null):
|
|
|
|
def __cbFun(snmpEngine, sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbInfo):
|
|
cbFun, cbCtx = cbInfo
|
|
cbFun(sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbCtx)
|
|
|
|
# for backward compatibility
|
|
if contextName is null and authData.contextName:
|
|
contextName = authData.contextName
|
|
|
|
return getCmd(
|
|
self.snmpEngine, authData, transportTarget,
|
|
ContextData(contextEngineId, contextName),
|
|
*[(x, self._null) for x in varNames],
|
|
**dict(cbFun=__cbFun, cbCtx=cbInfo,
|
|
lookupMib=lookupNames or lookupValues)
|
|
)
|
|
|
|
asyncGetCmd = getCmd
|
|
|
|
def setCmd(self, authData, transportTarget, varBinds, cbInfo,
|
|
lookupNames=False, lookupValues=False,
|
|
contextEngineId=None, contextName=null):
|
|
|
|
def __cbFun(snmpEngine, sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbInfo):
|
|
cbFun, cbCtx = cbInfo
|
|
cbFun(sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbCtx)
|
|
|
|
# for backward compatibility
|
|
if contextName is null and authData.contextName:
|
|
contextName = authData.contextName
|
|
|
|
return setCmd(
|
|
self.snmpEngine, authData, transportTarget,
|
|
ContextData(contextEngineId, contextName), *varBinds,
|
|
**dict(cbFun=__cbFun, cbCtx=cbInfo,
|
|
lookupMib=lookupNames or lookupValues)
|
|
)
|
|
|
|
asyncSetCmd = setCmd
|
|
|
|
def nextCmd(self, authData, transportTarget, varNames, cbInfo,
|
|
lookupNames=False, lookupValues=False,
|
|
contextEngineId=None, contextName=null):
|
|
|
|
def __cbFun(snmpEngine, sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbInfo):
|
|
cbFun, cbCtx = cbInfo
|
|
return cbFun(sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbCtx)
|
|
|
|
# for backward compatibility
|
|
if contextName is null and authData.contextName:
|
|
contextName = authData.contextName
|
|
|
|
return nextCmd(
|
|
self.snmpEngine, authData, transportTarget,
|
|
ContextData(contextEngineId, contextName),
|
|
*[(x, self._null) for x in varNames],
|
|
**dict(cbFun=__cbFun, cbCtx=cbInfo,
|
|
lookupMib=lookupNames or lookupValues)
|
|
)
|
|
|
|
asyncNextCmd = nextCmd
|
|
|
|
def bulkCmd(self, authData, transportTarget,
|
|
nonRepeaters, maxRepetitions, varNames, cbInfo,
|
|
lookupNames=False, lookupValues=False,
|
|
contextEngineId=None, contextName=null):
|
|
|
|
def __cbFun(snmpEngine, sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbInfo):
|
|
cbFun, cbCtx = cbInfo
|
|
return cbFun(sendRequestHandle,
|
|
errorIndication, errorStatus, errorIndex,
|
|
varBindTable, cbCtx)
|
|
|
|
# for backward compatibility
|
|
if contextName is null and authData.contextName:
|
|
contextName = authData.contextName
|
|
|
|
return bulkCmd(
|
|
self.snmpEngine, authData, transportTarget,
|
|
ContextData(contextEngineId, contextName),
|
|
nonRepeaters, maxRepetitions,
|
|
*[(x, self._null) for x in varNames],
|
|
**dict(cbFun=__cbFun, cbCtx=cbInfo,
|
|
lookupMib=lookupNames or lookupValues)
|
|
)
|
|
|
|
asyncBulkCmd = bulkCmd
|
|
|
|
|
|
class CommandGenerator(object):
|
|
_null = univ.Null('')
|
|
|
|
def __init__(self, snmpEngine=None, asynCmdGen=None):
|
|
# compatibility attributes
|
|
self.snmpEngine = snmpEngine or SnmpEngine()
|
|
|
|
def getCmd(self, authData, transportTarget, *varNames, **kwargs):
|
|
if 'lookupNames' not in kwargs:
|
|
kwargs['lookupNames'] = False
|
|
if 'lookupValues' not in kwargs:
|
|
kwargs['lookupValues'] = False
|
|
errorIndication, errorStatus, errorIndex, varBinds = None, 0, 0, []
|
|
for errorIndication, \
|
|
errorStatus, errorIndex, \
|
|
varBinds \
|
|
in sync.getCmd(self.snmpEngine, authData, transportTarget,
|
|
ContextData(kwargs.get('contextEngineId'),
|
|
kwargs.get('contextName', null)),
|
|
*[(x, self._null) for x in varNames],
|
|
**kwargs):
|
|
break
|
|
return errorIndication, errorStatus, errorIndex, varBinds
|
|
|
|
def setCmd(self, authData, transportTarget, *varBinds, **kwargs):
|
|
if 'lookupNames' not in kwargs:
|
|
kwargs['lookupNames'] = False
|
|
if 'lookupValues' not in kwargs:
|
|
kwargs['lookupValues'] = False
|
|
errorIndication, errorStatus, errorIndex, rspVarBinds = None, 0, 0, []
|
|
for errorIndication, \
|
|
errorStatus, errorIndex, \
|
|
rspVarBinds \
|
|
in sync.setCmd(self.snmpEngine, authData, transportTarget,
|
|
ContextData(kwargs.get('contextEngineId'),
|
|
kwargs.get('contextName', null)),
|
|
*varBinds,
|
|
**kwargs):
|
|
break
|
|
|
|
return errorIndication, errorStatus, errorIndex, rspVarBinds
|
|
|
|
def nextCmd(self, authData, transportTarget, *varNames, **kwargs):
|
|
if 'lookupNames' not in kwargs:
|
|
kwargs['lookupNames'] = False
|
|
if 'lookupValues' not in kwargs:
|
|
kwargs['lookupValues'] = False
|
|
if 'lexicographicMode' not in kwargs:
|
|
kwargs['lexicographicMode'] = False
|
|
errorIndication, errorStatus, errorIndex = None, 0, 0
|
|
varBindTable = []
|
|
for errorIndication, \
|
|
errorStatus, errorIndex, \
|
|
varBinds \
|
|
in sync.nextCmd(self.snmpEngine, authData, transportTarget,
|
|
ContextData(kwargs.get('contextEngineId'),
|
|
kwargs.get('contextName', null)),
|
|
*[(x, self._null) for x in varNames],
|
|
**kwargs):
|
|
if errorIndication or errorStatus:
|
|
return errorIndication, errorStatus, errorIndex, varBinds
|
|
|
|
varBindTable.append(varBinds)
|
|
|
|
return errorIndication, errorStatus, errorIndex, varBindTable
|
|
|
|
def bulkCmd(self, authData, transportTarget,
|
|
nonRepeaters, maxRepetitions, *varNames, **kwargs):
|
|
if 'lookupNames' not in kwargs:
|
|
kwargs['lookupNames'] = False
|
|
if 'lookupValues' not in kwargs:
|
|
kwargs['lookupValues'] = False
|
|
if 'lexicographicMode' not in kwargs:
|
|
kwargs['lexicographicMode'] = False
|
|
errorIndication, errorStatus, errorIndex = None, 0, 0
|
|
varBindTable = []
|
|
for errorIndication, \
|
|
errorStatus, errorIndex, \
|
|
varBinds \
|
|
in sync.bulkCmd(self.snmpEngine, authData,
|
|
transportTarget,
|
|
ContextData(kwargs.get('contextEngineId'),
|
|
kwargs.get('contextName', null)),
|
|
nonRepeaters, maxRepetitions,
|
|
*[(x, self._null) for x in varNames],
|
|
**kwargs):
|
|
if errorIndication or errorStatus:
|
|
return errorIndication, errorStatus, errorIndex, varBinds
|
|
|
|
varBindTable.append(varBinds)
|
|
|
|
return errorIndication, errorStatus, errorIndex, varBindTable
|