1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
# Shortcuts to MIB instrumentation items used internally in SNMP applications
import string
from pysnmp.smi.error import NoSuchObjectError
def getVersionSpecifics(snmpVersion): pass
def getTargetAddr(snmpEngine, snmpTargetAddrName):
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
# Transport endpoint
snmpTargetAddrEntry, = mibInstrumController.mibBuilder.importSymbols(
'SNMP-TARGET-MIB', 'snmpTargetAddrEntry'
)
tblIdx = snmpTargetAddrEntry.getInstIdFromIndices(
snmpTargetAddrName
)
snmpTargetAddrTDomain = snmpTargetAddrEntry.getNode(
snmpTargetAddrEntry.name + (2,) + tblIdx
)
snmpTargetAddrTAddress = snmpTargetAddrEntry.getNode(
snmpTargetAddrEntry.name + (3,) + tblIdx
)
snmpTargetAddrTimeout = snmpTargetAddrEntry.getNode(
snmpTargetAddrEntry.name + (4,) + tblIdx
)
snmpTargetAddrRetryCount = snmpTargetAddrEntry.getNode(
snmpTargetAddrEntry.name + (5,) + tblIdx
)
snmpTargetAddrParams = snmpTargetAddrEntry.getNode(
snmpTargetAddrEntry.name + (7,) + tblIdx
)
return ( snmpTargetAddrTDomain.syntax,
tuple(snmpTargetAddrTAddress.syntax),
snmpTargetAddrTimeout.syntax,
snmpTargetAddrRetryCount.syntax,
snmpTargetAddrParams.syntax )
def getTargetParams(snmpEngine, paramsName):
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
snmpTargetParamsEntry, = mibInstrumController.mibBuilder.importSymbols(
'SNMP-TARGET-MIB', 'snmpTargetParamsEntry'
)
tblIdx = snmpTargetParamsEntry.getInstIdFromIndices(
paramsName
)
snmpTargetParamsMPModel = snmpTargetParamsEntry.getNode(
snmpTargetParamsEntry.name + (2,) + tblIdx
)
snmpTargetParamsSecurityModel = snmpTargetParamsEntry.getNode(
snmpTargetParamsEntry.name + (3,) + tblIdx
)
snmpTargetParamsSecurityName = snmpTargetParamsEntry.getNode(
snmpTargetParamsEntry.name + (4,) + tblIdx
)
snmpTargetParamsSecurityLevel = snmpTargetParamsEntry.getNode(
snmpTargetParamsEntry.name + (5,) + tblIdx
)
return ( snmpTargetParamsMPModel.syntax,
snmpTargetParamsSecurityModel.syntax,
snmpTargetParamsSecurityName.syntax,
snmpTargetParamsSecurityLevel.syntax )
def getNotificationInfo(snmpEngine, notificationTarget):
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
# Transport endpoint
snmpNotifyEntry, = mibInstrumController.mibBuilder.importSymbols(
'SNMP-NOTIFICATION-MIB', 'snmpNotifyEntry'
)
tblIdx = snmpNotifyEntry.getInstIdFromIndices(
notificationTarget
)
snmpNotifyTag = snmpNotifyEntry.getNode(
snmpNotifyEntry.name + (2,) + tblIdx
)
snmpNotifyType = snmpNotifyEntry.getNode(
snmpNotifyEntry.name + (3,) + tblIdx
)
return snmpNotifyTag.syntax, snmpNotifyType.syntax
def getTargetNames(snmpEngine, tag):
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
# Transport endpoint
( snmpTargetAddrEntry,
snmpTargetAddrTagList ) = mibInstrumController.mibBuilder.importSymbols(
'SNMP-TARGET-MIB', 'snmpTargetAddrEntry', 'snmpTargetAddrTagList'
)
targetNames = []
nextName = snmpTargetAddrTagList.name
while 1:
try:
mibNode = snmpTargetAddrTagList.getNextNode(nextName)
except NoSuchObjectError:
break
# XXX stop on eot
if tag in string.split(str(mibNode.syntax)): # XXX add __split__()
idx = mibNode.name[len(snmpTargetAddrTagList.name):]
targetNames.append(
snmpTargetAddrEntry.getIndicesFromInstId(idx)[0]
)
nextName = mibNode.name
return targetNames
# XXX
# convert cmdrsp/cmdgen into this api
|