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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
# Shortcuts to MIB instrumentation items used internally in SNMP applications
import string
from pysnmp.smi.error import NoSuchObjectError
from pysnmp.entity import config
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
)
((v, snmpTargetAddrTDomain),
(v, snmpTargetAddrTAddress),
(v, snmpTargetAddrTimeout),
(v, snmpTargetAddrRetryCount),
(v, snmpTargetAddrParams)) = mibInstrumController.readVars(
((snmpTargetAddrEntry.name + (2,) + tblIdx, None),
(snmpTargetAddrEntry.name + (3,) + tblIdx, None),
(snmpTargetAddrEntry.name + (4,) + tblIdx, None),
(snmpTargetAddrEntry.name + (5,) + tblIdx, None),
(snmpTargetAddrEntry.name + (7,) + tblIdx, None))
)
if snmpTargetAddrTDomain == config.snmpUDPDomain:
SnmpUDPAddress, = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder.importSymbols('SNMPv2-TM', 'SnmpUDPAddress')
snmpTargetAddrTAddress = tuple(
SnmpUDPAddress(snmpTargetAddrTAddress)
)
return ( snmpTargetAddrTDomain,
snmpTargetAddrTAddress,
snmpTargetAddrTimeout,
snmpTargetAddrRetryCount,
snmpTargetAddrParams )
def getTargetInfo(snmpEngine, snmpTargetAddrName):
# Transport endpoint
( snmpTargetAddrTDomain,
snmpTargetAddrTAddress,
snmpTargetAddrTimeout,
snmpTargetAddrRetryCount,
snmpTargetAddrParams ) = getTargetAddr(snmpEngine, snmpTargetAddrName)
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
# Target params
snmpTargetParamsEntry, = mibInstrumController.mibBuilder.importSymbols(
'SNMP-TARGET-MIB', 'snmpTargetParamsEntry'
)
tblIdx = snmpTargetParamsEntry.getInstIdFromIndices(
snmpTargetAddrParams
)
((v, snmpTargetParamsMPModel),
(v, snmpTargetParamsSecurityModel),
(v, snmpTargetParamsSecurityName),
(v, snmpTargetParamsSecurityLevel)) = mibInstrumController.readVars(
((snmpTargetParamsEntry.name + (2,) + tblIdx, None),
(snmpTargetParamsEntry.name + (3,) + tblIdx, None),
(snmpTargetParamsEntry.name + (4,) + tblIdx, None),
(snmpTargetParamsEntry.name + (5,) + tblIdx, None))
)
return ( snmpTargetAddrTDomain,
snmpTargetAddrTAddress,
snmpTargetAddrTimeout,
snmpTargetAddrRetryCount,
snmpTargetParamsMPModel,
snmpTargetParamsSecurityModel,
snmpTargetParamsSecurityName,
snmpTargetParamsSecurityLevel )
def getTargetParams(snmpEngine, paramsName):
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
snmpTargetParamsEntry, = mibInstrumController.mibBuilder.importSymbols(
'SNMP-TARGET-MIB', 'snmpTargetParamsEntry'
)
tblIdx = snmpTargetParamsEntry.getInstIdFromIndices(
paramsName
)
((v, snmpTargetParamsMPModel),
(v, snmpTargetParamsSecurityModel),
(v, snmpTargetParamsSecurityName),
(v, snmpTargetParamsSecurityLevel)) = mibInstrumController.readVars(
((snmpTargetParamsEntry.name + (2,) + tblIdx, None),
(snmpTargetParamsEntry.name + (3,) + tblIdx, None),
(snmpTargetParamsEntry.name + (4,) + tblIdx, None),
(snmpTargetParamsEntry.name + (5,) + tblIdx, None))
)
return ( snmpTargetParamsMPModel,
snmpTargetParamsSecurityModel,
snmpTargetParamsSecurityName,
snmpTargetParamsSecurityLevel )
def getNotificationInfo(snmpEngine, notificationTarget):
mibInstrumController = snmpEngine.msgAndPduDsp.mibInstrumController
# Transport endpoint
snmpNotifyEntry, = mibInstrumController.mibBuilder.importSymbols(
'SNMP-NOTIFICATION-MIB', 'snmpNotifyEntry'
)
tblIdx = snmpNotifyEntry.getInstIdFromIndices(
notificationTarget
)
((v, snmpNotifyTag),
(v, snmpNotifyType)) = mibInstrumController.readVars(
((snmpNotifyEntry.name + (2,) + tblIdx, None),
(snmpNotifyEntry.name + (3,) + tblIdx, None))
)
return snmpNotifyTag, snmpNotifyType
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
|