etingof / pysnmp

Python SNMP library
http://snmplabs.com/pysnmp/
BSD 2-Clause "Simplified" License
583 stars 201 forks source link

Importing custom mibs #67

Open BusbyActual opened 7 years ago

BusbyActual commented 7 years ago

I'm trying to import some custom MIB files and I'm not getting the output I'd expect. A large amount of the modules aren't being shown. I'm using your SNMP MIB browser template. I found a stacked overflow article on how the MIB files need to be formatted to pysnmp format first. According to the docs this appears to be automated now so that might not be the issue. I'm just trying to get a browser / parser for the Oids and their names.

etingof commented 7 years ago

You do not need to prepare MIBs anyhow to let pysnmp consuming them.

Do you get all the compiled MIBs in ~/.pysnmp/mibs/ ?

Do you have MIB compiler piece uncommented?

Have you set up MIB search path properly with all the dependent MIBs present there?

I'd suggest setting up http://mibs.snmplabs.com/asn1/ as one of your MIB sources to make sure the dependencies would be satisfied.

To see what is happenning under the hood I'd enable pysmi debugging and watch its output:

from pysmi import debug
debug.setLogger(debug.Debug('searcher', 'reader', 'compiler'))
BusbyActual commented 7 years ago

Below is the script template I'm working off of.

  1. Do you get all the compiled MIBs in ~/.pysnmp/mibs/ ?

    I'm unable to locate this directory so no.

  2. Do you have MIB compiler piece uncommented?

    I didn't initially however I tried logging it and the same result.

  3. Have you set up MIB search path properly with all the dependent MIBs present there?

    Not sure here. Trying to find documentation on this one. I'm just sourcing the directory with all the MIBs and they work fine in a MIB browsing app.

  4. Debugging

    I can see the steps it's taking to do things more clearly. However, it doesn't like the from arg or the import options provided so I copied some from here .

from pysnmp.smi import builder, view, compiler, error
from pysnmp import debug

debug.setLogger(debug.Debug('dsp'))

# Create MIB loader/builder
mibBuilder = builder.MibBuilder()

# Optionally attach PySMI MIB compiler (if installed)
print('Attaching MIB compiler...'),
compiler.addMibCompiler(mibBuilder, sources=['/users/admin/desktop/mib/mibfiles/', 'http://mibs.snmplabs.com/asn1/'])
print('done')

# Optionally set an alternative path to compiled MIBs
print('Setting MIB sources...')
mibBuilder.addMibSources(builder.DirMibSource('/users/admin/desktop/mib/mibfiles/'))
print(mibBuilder.getMibSources())
print('done')

print('Loading MIB modules...'),
mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-FRAMEWORK-MIB', 'SNMP-COMMUNITY-MIB', 'IP-MIB')
print('done')

print('Indexing MIB objects...'),
mibView = view.MibViewController(mibBuilder)
print('done')

print('MIB symbol name lookup by OID: '),
oid, label, suffix = mibView.getNodeName((1,3,6,1,4,1))
print(oid, label, suffix)

print('MIB symbol name lookup by label: '),
oid, label, suffix = mibView.getNodeName((1,3,6,1,4,1,'mib-2',1,'sysDescr'))
print(oid, label, suffix)

print('MIB symbol name lookup by symbol description: '),
oid, label, suffix = mibView.getNodeName(('sysDescr',))
oid, label, suffix = mibView.getNodeName(('snmpEngineID',), 'SNMP-FRAMEWORK-MIB')
print(oid, label, suffix)

print('MIB object value pretty print: '),
mibNode, = mibBuilder.importSymbols('SNMP-FRAMEWORK-MIB', 'snmpEngineID')
print(mibNode.syntax.prettyPrint())

print('MIB symbol location lookup by name: '),
modName, symName, suffix = mibView.getNodeLocation(('snmpCommunityEntry',))
print(symName, modName)

print('MIB node lookup by location: '),
rowNode, = mibBuilder.importSymbols(modName, symName)
print(rowNode)

print('Conceptual table index value to oid convertion: '),
oid = rowNode.getInstIdFromIndices('router')
print(oid)
print('Conceptual table index oid to value convertion: '),
print(rowNode.getIndicesFromInstId(oid))

print('MIB tree traversal')
oid, label, suffix = mibView.getFirstNodeName()
while 1:
    try:
        modName, nodeDesc, suffix = mibView.getNodeLocation(oid)
        print('%s::%s == %s' % (modName, nodeDesc, oid))
        oid, label, suffix = mibView.getNextNodeName(oid)
    except error.NoSuchObjectError:
        break

print('Modules traversal')
modName = mibView.getFirstModuleName()
while 1:
    if modName: print(modName)
    try:
        modName = mibView.getNextModuleName(modName)
    except error.SmiError:
        break
etingof commented 7 years ago

The exact same code runs for me with the latest pysnmp and its dependencies.

I've a couple of MIBs lended in ~/.pysnmp/mibs/*.py once I run your script.

Can you make sure you are running the latest released pysnmp (which should also pull in its dependencies)?

However, it doesn't like the from arg or the import options provided so I copied some from here

Can you please elaborate on this? What is the exact error message? Is it that MIB compiler (pysmi) is not installed on your system?

BusbyActual commented 7 years ago

When I tried to check the version / install of pysmi and pysnmp it said the requirements were met. I uninstalled and reinstalled and it works now. Before it was giving an error that it couldn't find debug. I still have the same issue of the Oids not being populated in the output. I'm adding an example MIB

I now have files at ~/.pysnmp/mibs/*.py:

IANAifType-MIB.py IP-MIB.py pycache IF-MIB.py SNMPv2-MIB.py


python3 test.py
2017-07-19 08:01:32,926 pysmi: running pysmi version 0.1.3
2017-07-19 08:01:32,927 pysmi: debug category 'searcher' enabled
2017-07-19 08:01:32,927 pysmi: debug category 'reader' enabled
2017-07-19 08:01:32,927 pysmi: debug category 'compiler' enabled
Attaching MIB compiler...
2017-07-19 08:01:33,091 pysmi: current MIB source(s): FileReader{"/users/admin/desktop/mib/mibfiles"}, HttpReader{"http://mibs.snmplabs.com:80/asn1/"}
2017-07-19 08:01:33,091 pysmi: current compiled MIBs location(s): StubSearcher
2017-07-19 08:01:33,091 pysmi: current compiled MIBs location(s): StubSearcher, PyPackageSearcher{"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/mibs"}, PyPackageSearcher{"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/mibs/instances"}, PyPackageSearcher{"pysnmp_mibs"}
2017-07-19 08:01:33,091 pysmi: current MIB borrower(s):
done
Setting MIB sources...
(DirMibSource('/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/mibs'), DirMibSource('/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/mibs/instances'), DirMibSource('pysnmp_mibs'), DirMibSource('/Users/admin/.pysnmp/mibs'), DirMibSource('/users/admin/desktop/mib/mibfiles'))
done
Loading MIB modules...
done
Indexing MIB objects...
done
MIB symbol name lookup by OID:
(1, 3, 6, 1, 4, 1) ('iso', 'org', 'dod', 'internet', 'private', 'enterprises') ()
MIB symbol name lookup by label:
(1, 3, 6, 1, 4, 1) ('iso', 'org', 'dod', 'internet', 'private', 'enterprises') ('mib-2', 1, 'sysDescr')
MIB symbol name lookup by symbol description:
(1, 3, 6, 1, 6, 3, 10, 2, 1, 1) ('iso', 'org', 'dod', 'internet', 'snmpV2', 'snmpModules', 'snmpFrameworkMIB', 'snmpFrameworkMIBObjects', 'snmpEngine', 'snmpEngineID') ()
MIB object value pretty print:
0x80004fb80542757362792e6c6f63616cfcd13208
MIB symbol location lookup by name:
snmpCommunityEntry SNMP-COMMUNITY-MIB
MIB node lookup by location:
MibTableRow((1, 3, 6, 1, 6, 3, 18, 1, 1, 1), None)
Conceptual table index value to oid convertion:
(114, 111, 117, 116, 101, 114)
Conceptual table index oid to value convertion:
(SnmpAdminString(b'router', subtypeSpec=ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(), ValueSizeConstraint(0, 65535)), ValueSizeConstraint(0, 255)), ValueSizeConstraint(1, 32))),)
MIB tree traversal
SNMPv2-SMI::itu-t == (0,)
SNMPv2-SMI::zeroDotZero == (0, 0)
SNMPv2-SMI::iso == (1,)
SNMPv2-SMI::org == (1, 3)
SNMPv2-SMI::dod == (1, 3, 6)
SNMPv2-SMI::internet == (1, 3, 6, 1)
SNMPv2-SMI::directory == (1, 3, 6, 1, 1)
SNMPv2-SMI::mgmt == (1, 3, 6, 1, 2)
SNMPv2-SMI::mib-2 == (1, 3, 6, 1, 2, 1)
SNMPv2-MIB::system == (1, 3, 6, 1, 2, 1, 1)
SNMPv2-MIB::sysDescr == (1, 3, 6, 1, 2, 1, 1, 1)
SNMPv2-MIB::sysObjectID == (1, 3, 6, 1, 2, 1, 1, 2)
SNMPv2-MIB::sysUpTime == (1, 3, 6, 1, 2, 1, 1, 3)
SNMPv2-MIB::sysContact == (1, 3, 6, 1, 2, 1, 1, 4)
SNMPv2-MIB::sysName == (1, 3, 6, 1, 2, 1, 1, 5)
SNMPv2-MIB::sysLocation == (1, 3, 6, 1, 2, 1, 1, 6)
SNMPv2-MIB::sysServices == (1, 3, 6, 1, 2, 1, 1, 7)
SNMPv2-MIB::sysORLastChange == (1, 3, 6, 1, 2, 1, 1, 8)
SNMPv2-MIB::sysORTable == (1, 3, 6, 1, 2, 1, 1, 9)
SNMPv2-MIB::sysOREntry == (1, 3, 6, 1, 2, 1, 1, 9, 1)
SNMPv2-MIB::sysORIndex == (1, 3, 6, 1, 2, 1, 1, 9, 1, 1)
SNMPv2-MIB::sysORID == (1, 3, 6, 1, 2, 1, 1, 9, 1, 2)
SNMPv2-MIB::sysORDescr == (1, 3, 6, 1, 2, 1, 1, 9, 1, 3)
SNMPv2-MIB::sysORUpTime == (1, 3, 6, 1, 2, 1, 1, 9, 1, 4)
IF-MIB::interfaces == (1, 3, 6, 1, 2, 1, 2)
IF-MIB::ifNumber == (1, 3, 6, 1, 2, 1, 2, 1)
IF-MIB::ifTable == (1, 3, 6, 1, 2, 1, 2, 2)
IF-MIB::ifEntry == (1, 3, 6, 1, 2, 1, 2, 2, 1)
IF-MIB::ifIndex == (1, 3, 6, 1, 2, 1, 2, 2, 1, 1)
IF-MIB::ifDescr == (1, 3, 6, 1, 2, 1, 2, 2, 1, 2)
IF-MIB::ifType == (1, 3, 6, 1, 2, 1, 2, 2, 1, 3)
IF-MIB::ifMtu == (1, 3, 6, 1, 2, 1, 2, 2, 1, 4)
IF-MIB::ifSpeed == (1, 3, 6, 1, 2, 1, 2, 2, 1, 5)
IF-MIB::ifPhysAddress == (1, 3, 6, 1, 2, 1, 2, 2, 1, 6)
IF-MIB::ifAdminStatus == (1, 3, 6, 1, 2, 1, 2, 2, 1, 7)
IF-MIB::ifOperStatus == (1, 3, 6, 1, 2, 1, 2, 2, 1, 8)
IF-MIB::ifLastChange == (1, 3, 6, 1, 2, 1, 2, 2, 1, 9)
IF-MIB::ifInOctets == (1, 3, 6, 1, 2, 1, 2, 2, 1, 10)
IF-MIB::ifInUcastPkts == (1, 3, 6, 1, 2, 1, 2, 2, 1, 11)
IF-MIB::ifInNUcastPkts == (1, 3, 6, 1, 2, 1, 2, 2, 1, 12)
IF-MIB::ifInDiscards == (1, 3, 6, 1, 2, 1, 2, 2, 1, 13)
IF-MIB::ifInErrors == (1, 3, 6, 1, 2, 1, 2, 2, 1, 14)
IF-MIB::ifInUnknownProtos == (1, 3, 6, 1, 2, 1, 2, 2, 1, 15)
IF-MIB::ifOutOctets == (1, 3, 6, 1, 2, 1, 2, 2, 1, 16)
IF-MIB::ifOutUcastPkts == (1, 3, 6, 1, 2, 1, 2, 2, 1, 17)
IF-MIB::ifOutNUcastPkts == (1, 3, 6, 1, 2, 1, 2, 2, 1, 18)
IF-MIB::ifOutDiscards == (1, 3, 6, 1, 2, 1, 2, 2, 1, 19)
IF-MIB::ifOutErrors == (1, 3, 6, 1, 2, 1, 2, 2, 1, 20)
IF-MIB::ifOutQLen == (1, 3, 6, 1, 2, 1, 2, 2, 1, 21)
IF-MIB::ifSpecific == (1, 3, 6, 1, 2, 1, 2, 2, 1, 22)
IP-MIB::ip == (1, 3, 6, 1, 2, 1, 4)
IP-MIB::ipForwarding == (1, 3, 6, 1, 2, 1, 4, 1)
IP-MIB::ipDefaultTTL == (1, 3, 6, 1, 2, 1, 4, 2)
IP-MIB::ipInReceives == (1, 3, 6, 1, 2, 1, 4, 3)
IP-MIB::ipInHdrErrors == (1, 3, 6, 1, 2, 1, 4, 4)
IP-MIB::ipInAddrErrors == (1, 3, 6, 1, 2, 1, 4, 5)
IP-MIB::ipForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 6)
IP-MIB::ipInUnknownProtos == (1, 3, 6, 1, 2, 1, 4, 7)
IP-MIB::ipInDiscards == (1, 3, 6, 1, 2, 1, 4, 8)
IP-MIB::ipInDelivers == (1, 3, 6, 1, 2, 1, 4, 9)
IP-MIB::ipOutRequests == (1, 3, 6, 1, 2, 1, 4, 10)
IP-MIB::ipOutDiscards == (1, 3, 6, 1, 2, 1, 4, 11)
IP-MIB::ipOutNoRoutes == (1, 3, 6, 1, 2, 1, 4, 12)
IP-MIB::ipReasmTimeout == (1, 3, 6, 1, 2, 1, 4, 13)
IP-MIB::ipReasmReqds == (1, 3, 6, 1, 2, 1, 4, 14)
IP-MIB::ipReasmOKs == (1, 3, 6, 1, 2, 1, 4, 15)
IP-MIB::ipReasmFails == (1, 3, 6, 1, 2, 1, 4, 16)
IP-MIB::ipFragOKs == (1, 3, 6, 1, 2, 1, 4, 17)
IP-MIB::ipFragFails == (1, 3, 6, 1, 2, 1, 4, 18)
IP-MIB::ipFragCreates == (1, 3, 6, 1, 2, 1, 4, 19)
IP-MIB::ipAddrTable == (1, 3, 6, 1, 2, 1, 4, 20)
IP-MIB::ipAddrEntry == (1, 3, 6, 1, 2, 1, 4, 20, 1)
IP-MIB::ipAdEntAddr == (1, 3, 6, 1, 2, 1, 4, 20, 1, 1)
IP-MIB::ipAdEntIfIndex == (1, 3, 6, 1, 2, 1, 4, 20, 1, 2)
IP-MIB::ipAdEntNetMask == (1, 3, 6, 1, 2, 1, 4, 20, 1, 3)
IP-MIB::ipAdEntBcastAddr == (1, 3, 6, 1, 2, 1, 4, 20, 1, 4)
IP-MIB::ipAdEntReasmMaxSize == (1, 3, 6, 1, 2, 1, 4, 20, 1, 5)
IP-MIB::ipNetToMediaTable == (1, 3, 6, 1, 2, 1, 4, 22)
IP-MIB::ipNetToMediaEntry == (1, 3, 6, 1, 2, 1, 4, 22, 1)
IP-MIB::ipNetToMediaIfIndex == (1, 3, 6, 1, 2, 1, 4, 22, 1, 1)
IP-MIB::ipNetToMediaPhysAddress == (1, 3, 6, 1, 2, 1, 4, 22, 1, 2)
IP-MIB::ipNetToMediaNetAddress == (1, 3, 6, 1, 2, 1, 4, 22, 1, 3)
IP-MIB::ipNetToMediaType == (1, 3, 6, 1, 2, 1, 4, 22, 1, 4)
IP-MIB::ipRoutingDiscards == (1, 3, 6, 1, 2, 1, 4, 23)
IP-MIB::ipv6IpForwarding == (1, 3, 6, 1, 2, 1, 4, 25)
IP-MIB::ipv6IpDefaultHopLimit == (1, 3, 6, 1, 2, 1, 4, 26)
IP-MIB::ipv4InterfaceTableLastChange == (1, 3, 6, 1, 2, 1, 4, 27)
IP-MIB::ipv4InterfaceTable == (1, 3, 6, 1, 2, 1, 4, 28)
IP-MIB::ipv4InterfaceEntry == (1, 3, 6, 1, 2, 1, 4, 28, 1)
IP-MIB::ipv4InterfaceIfIndex == (1, 3, 6, 1, 2, 1, 4, 28, 1, 1)
IP-MIB::ipv4InterfaceReasmMaxSize == (1, 3, 6, 1, 2, 1, 4, 28, 1, 2)
IP-MIB::ipv4InterfaceEnableStatus == (1, 3, 6, 1, 2, 1, 4, 28, 1, 3)
IP-MIB::ipv4InterfaceRetransmitTime == (1, 3, 6, 1, 2, 1, 4, 28, 1, 4)
IP-MIB::ipv6InterfaceTableLastChange == (1, 3, 6, 1, 2, 1, 4, 29)
IP-MIB::ipv6InterfaceTable == (1, 3, 6, 1, 2, 1, 4, 30)
IP-MIB::ipv6InterfaceEntry == (1, 3, 6, 1, 2, 1, 4, 30, 1)
IP-MIB::ipv6InterfaceIfIndex == (1, 3, 6, 1, 2, 1, 4, 30, 1, 1)
IP-MIB::ipv6InterfaceReasmMaxSize == (1, 3, 6, 1, 2, 1, 4, 30, 1, 2)
IP-MIB::ipv6InterfaceIdentifier == (1, 3, 6, 1, 2, 1, 4, 30, 1, 3)
IP-MIB::ipv6InterfaceEnableStatus == (1, 3, 6, 1, 2, 1, 4, 30, 1, 5)
IP-MIB::ipv6InterfaceReachableTime == (1, 3, 6, 1, 2, 1, 4, 30, 1, 6)
IP-MIB::ipv6InterfaceRetransmitTime == (1, 3, 6, 1, 2, 1, 4, 30, 1, 7)
IP-MIB::ipv6InterfaceForwarding == (1, 3, 6, 1, 2, 1, 4, 30, 1, 8)
IP-MIB::ipTrafficStats == (1, 3, 6, 1, 2, 1, 4, 31)
IP-MIB::ipSystemStatsTable == (1, 3, 6, 1, 2, 1, 4, 31, 1)
IP-MIB::ipSystemStatsEntry == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1)
IP-MIB::ipSystemStatsIPVersion == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 1)
IP-MIB::ipSystemStatsInReceives == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 3)
IP-MIB::ipSystemStatsHCInReceives == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 4)
IP-MIB::ipSystemStatsInOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 5)
IP-MIB::ipSystemStatsHCInOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 6)
IP-MIB::ipSystemStatsInHdrErrors == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 7)
IP-MIB::ipSystemStatsInNoRoutes == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 8)
IP-MIB::ipSystemStatsInAddrErrors == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 9)
IP-MIB::ipSystemStatsInUnknownProtos == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 10)
IP-MIB::ipSystemStatsInTruncatedPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 11)
IP-MIB::ipSystemStatsInForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 12)
IP-MIB::ipSystemStatsHCInForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 13)
IP-MIB::ipSystemStatsReasmReqds == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 14)
IP-MIB::ipSystemStatsReasmOKs == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 15)
IP-MIB::ipSystemStatsReasmFails == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 16)
IP-MIB::ipSystemStatsInDiscards == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 17)
IP-MIB::ipSystemStatsInDelivers == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 18)
IP-MIB::ipSystemStatsHCInDelivers == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 19)
IP-MIB::ipSystemStatsOutRequests == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 20)
IP-MIB::ipSystemStatsHCOutRequests == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 21)
IP-MIB::ipSystemStatsOutNoRoutes == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 22)
IP-MIB::ipSystemStatsOutForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 23)
IP-MIB::ipSystemStatsHCOutForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 24)
IP-MIB::ipSystemStatsOutDiscards == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 25)
IP-MIB::ipSystemStatsOutFragReqds == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 26)
IP-MIB::ipSystemStatsOutFragOKs == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 27)
IP-MIB::ipSystemStatsOutFragFails == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 28)
IP-MIB::ipSystemStatsOutFragCreates == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 29)
IP-MIB::ipSystemStatsOutTransmits == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 30)
IP-MIB::ipSystemStatsHCOutTransmits == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 31)
IP-MIB::ipSystemStatsOutOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 32)
IP-MIB::ipSystemStatsHCOutOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 33)
IP-MIB::ipSystemStatsInMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 34)
IP-MIB::ipSystemStatsHCInMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 35)
IP-MIB::ipSystemStatsInMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 36)
IP-MIB::ipSystemStatsHCInMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 37)
IP-MIB::ipSystemStatsOutMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 38)
IP-MIB::ipSystemStatsHCOutMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 39)
IP-MIB::ipSystemStatsOutMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 40)
IP-MIB::ipSystemStatsHCOutMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 41)
IP-MIB::ipSystemStatsInBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 42)
IP-MIB::ipSystemStatsHCInBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 43)
IP-MIB::ipSystemStatsOutBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 44)
IP-MIB::ipSystemStatsHCOutBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 45)
IP-MIB::ipSystemStatsDiscontinuityTime == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 46)
IP-MIB::ipSystemStatsRefreshRate == (1, 3, 6, 1, 2, 1, 4, 31, 1, 1, 47)
IP-MIB::ipIfStatsTableLastChange == (1, 3, 6, 1, 2, 1, 4, 31, 2)
IP-MIB::ipIfStatsTable == (1, 3, 6, 1, 2, 1, 4, 31, 3)
IP-MIB::ipIfStatsEntry == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1)
IP-MIB::ipIfStatsIPVersion == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 1)
IP-MIB::ipIfStatsIfIndex == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 2)
IP-MIB::ipIfStatsInReceives == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 3)
IP-MIB::ipIfStatsHCInReceives == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 4)
IP-MIB::ipIfStatsInOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 5)
IP-MIB::ipIfStatsHCInOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 6)
IP-MIB::ipIfStatsInHdrErrors == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 7)
IP-MIB::ipIfStatsInNoRoutes == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 8)
IP-MIB::ipIfStatsInAddrErrors == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 9)
IP-MIB::ipIfStatsInUnknownProtos == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 10)
IP-MIB::ipIfStatsInTruncatedPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 11)
IP-MIB::ipIfStatsInForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 12)
IP-MIB::ipIfStatsHCInForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 13)
IP-MIB::ipIfStatsReasmReqds == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 14)
IP-MIB::ipIfStatsReasmOKs == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 15)
IP-MIB::ipIfStatsReasmFails == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 16)
IP-MIB::ipIfStatsInDiscards == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 17)
IP-MIB::ipIfStatsInDelivers == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 18)
IP-MIB::ipIfStatsHCInDelivers == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 19)
IP-MIB::ipIfStatsOutRequests == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 20)
IP-MIB::ipIfStatsHCOutRequests == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 21)
IP-MIB::ipIfStatsOutForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 23)
IP-MIB::ipIfStatsHCOutForwDatagrams == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 24)
IP-MIB::ipIfStatsOutDiscards == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 25)
IP-MIB::ipIfStatsOutFragReqds == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 26)
IP-MIB::ipIfStatsOutFragOKs == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 27)
IP-MIB::ipIfStatsOutFragFails == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 28)
IP-MIB::ipIfStatsOutFragCreates == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 29)
IP-MIB::ipIfStatsOutTransmits == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 30)
IP-MIB::ipIfStatsHCOutTransmits == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 31)
IP-MIB::ipIfStatsOutOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 32)
IP-MIB::ipIfStatsHCOutOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 33)
IP-MIB::ipIfStatsInMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 34)
IP-MIB::ipIfStatsHCInMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 35)
IP-MIB::ipIfStatsInMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 36)
IP-MIB::ipIfStatsHCInMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 37)
IP-MIB::ipIfStatsOutMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 38)
IP-MIB::ipIfStatsHCOutMcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 39)
IP-MIB::ipIfStatsOutMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 40)
IP-MIB::ipIfStatsHCOutMcastOctets == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 41)
IP-MIB::ipIfStatsInBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 42)
IP-MIB::ipIfStatsHCInBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 43)
IP-MIB::ipIfStatsOutBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 44)
IP-MIB::ipIfStatsHCOutBcastPkts == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 45)
IP-MIB::ipIfStatsDiscontinuityTime == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 46)
IP-MIB::ipIfStatsRefreshRate == (1, 3, 6, 1, 2, 1, 4, 31, 3, 1, 47)
IP-MIB::ipAddressPrefixTable == (1, 3, 6, 1, 2, 1, 4, 32)
IP-MIB::ipAddressPrefixEntry == (1, 3, 6, 1, 2, 1, 4, 32, 1)
IP-MIB::ipAddressPrefixIfIndex == (1, 3, 6, 1, 2, 1, 4, 32, 1, 1)
IP-MIB::ipAddressPrefixType == (1, 3, 6, 1, 2, 1, 4, 32, 1, 2)
IP-MIB::ipAddressPrefixPrefix == (1, 3, 6, 1, 2, 1, 4, 32, 1, 3)
IP-MIB::ipAddressPrefixLength == (1, 3, 6, 1, 2, 1, 4, 32, 1, 4)
IP-MIB::ipAddressPrefixOrigin == (1, 3, 6, 1, 2, 1, 4, 32, 1, 5)
IP-MIB::ipAddressPrefixOnLinkFlag == (1, 3, 6, 1, 2, 1, 4, 32, 1, 6)
IP-MIB::ipAddressPrefixAutonomousFlag == (1, 3, 6, 1, 2, 1, 4, 32, 1, 7)
IP-MIB::ipAddressPrefixAdvPreferredLifetime == (1, 3, 6, 1, 2, 1, 4, 32, 1, 8)
IP-MIB::ipAddressPrefixAdvValidLifetime == (1, 3, 6, 1, 2, 1, 4, 32, 1, 9)
IP-MIB::ipAddressSpinLock == (1, 3, 6, 1, 2, 1, 4, 33)
IP-MIB::ipAddressTable == (1, 3, 6, 1, 2, 1, 4, 34)
IP-MIB::ipAddressEntry == (1, 3, 6, 1, 2, 1, 4, 34, 1)
IP-MIB::ipAddressAddrType == (1, 3, 6, 1, 2, 1, 4, 34, 1, 1)
IP-MIB::ipAddressAddr == (1, 3, 6, 1, 2, 1, 4, 34, 1, 2)
IP-MIB::ipAddressIfIndex == (1, 3, 6, 1, 2, 1, 4, 34, 1, 3)
IP-MIB::ipAddressType == (1, 3, 6, 1, 2, 1, 4, 34, 1, 4)
IP-MIB::ipAddressPrefix == (1, 3, 6, 1, 2, 1, 4, 34, 1, 5)
IP-MIB::ipAddressOrigin == (1, 3, 6, 1, 2, 1, 4, 34, 1, 6)
IP-MIB::ipAddressStatus == (1, 3, 6, 1, 2, 1, 4, 34, 1, 7)
IP-MIB::ipAddressCreated == (1, 3, 6, 1, 2, 1, 4, 34, 1, 8)
IP-MIB::ipAddressLastChanged == (1, 3, 6, 1, 2, 1, 4, 34, 1, 9)
IP-MIB::ipAddressRowStatus == (1, 3, 6, 1, 2, 1, 4, 34, 1, 10)
IP-MIB::ipAddressStorageType == (1, 3, 6, 1, 2, 1, 4, 34, 1, 11)
IP-MIB::ipNetToPhysicalTable == (1, 3, 6, 1, 2, 1, 4, 35)
IP-MIB::ipNetToPhysicalEntry == (1, 3, 6, 1, 2, 1, 4, 35, 1)
IP-MIB::ipNetToPhysicalIfIndex == (1, 3, 6, 1, 2, 1, 4, 35, 1, 1)
IP-MIB::ipNetToPhysicalNetAddressType == (1, 3, 6, 1, 2, 1, 4, 35, 1, 2)
IP-MIB::ipNetToPhysicalNetAddress == (1, 3, 6, 1, 2, 1, 4, 35, 1, 3)
IP-MIB::ipNetToPhysicalPhysAddress == (1, 3, 6, 1, 2, 1, 4, 35, 1, 4)
IP-MIB::ipNetToPhysicalLastUpdated == (1, 3, 6, 1, 2, 1, 4, 35, 1, 5)
IP-MIB::ipNetToPhysicalType == (1, 3, 6, 1, 2, 1, 4, 35, 1, 6)
IP-MIB::ipNetToPhysicalState == (1, 3, 6, 1, 2, 1, 4, 35, 1, 7)
IP-MIB::ipNetToPhysicalRowStatus == (1, 3, 6, 1, 2, 1, 4, 35, 1, 8)
IP-MIB::ipv6ScopeZoneIndexTable == (1, 3, 6, 1, 2, 1, 4, 36)
IP-MIB::ipv6ScopeZoneIndexEntry == (1, 3, 6, 1, 2, 1, 4, 36, 1)
IP-MIB::ipv6ScopeZoneIndexIfIndex == (1, 3, 6, 1, 2, 1, 4, 36, 1, 1)
IP-MIB::ipv6ScopeZoneIndexLinkLocal == (1, 3, 6, 1, 2, 1, 4, 36, 1, 2)
IP-MIB::ipv6ScopeZoneIndex3 == (1, 3, 6, 1, 2, 1, 4, 36, 1, 3)
IP-MIB::ipv6ScopeZoneIndexAdminLocal == (1, 3, 6, 1, 2, 1, 4, 36, 1, 4)
IP-MIB::ipv6ScopeZoneIndexSiteLocal == (1, 3, 6, 1, 2, 1, 4, 36, 1, 5)
IP-MIB::ipv6ScopeZoneIndex6 == (1, 3, 6, 1, 2, 1, 4, 36, 1, 6)
IP-MIB::ipv6ScopeZoneIndex7 == (1, 3, 6, 1, 2, 1, 4, 36, 1, 7)
IP-MIB::ipv6ScopeZoneIndexOrganizationLocal == (1, 3, 6, 1, 2, 1, 4, 36, 1, 8)
IP-MIB::ipv6ScopeZoneIndex9 == (1, 3, 6, 1, 2, 1, 4, 36, 1, 9)
IP-MIB::ipv6ScopeZoneIndexA == (1, 3, 6, 1, 2, 1, 4, 36, 1, 10)
IP-MIB::ipv6ScopeZoneIndexB == (1, 3, 6, 1, 2, 1, 4, 36, 1, 11)
IP-MIB::ipv6ScopeZoneIndexC == (1, 3, 6, 1, 2, 1, 4, 36, 1, 12)
IP-MIB::ipv6ScopeZoneIndexD == (1, 3, 6, 1, 2, 1, 4, 36, 1, 13)
IP-MIB::ipDefaultRouterTable == (1, 3, 6, 1, 2, 1, 4, 37)
IP-MIB::ipDefaultRouterEntry == (1, 3, 6, 1, 2, 1, 4, 37, 1)
IP-MIB::ipDefaultRouterAddressType == (1, 3, 6, 1, 2, 1, 4, 37, 1, 1)
IP-MIB::ipDefaultRouterAddress == (1, 3, 6, 1, 2, 1, 4, 37, 1, 2)
IP-MIB::ipDefaultRouterIfIndex == (1, 3, 6, 1, 2, 1, 4, 37, 1, 3)
IP-MIB::ipDefaultRouterLifetime == (1, 3, 6, 1, 2, 1, 4, 37, 1, 4)
IP-MIB::ipDefaultRouterPreference == (1, 3, 6, 1, 2, 1, 4, 37, 1, 5)
IP-MIB::ipv6RouterAdvertSpinLock == (1, 3, 6, 1, 2, 1, 4, 38)
IP-MIB::ipv6RouterAdvertTable == (1, 3, 6, 1, 2, 1, 4, 39)
IP-MIB::ipv6RouterAdvertEntry == (1, 3, 6, 1, 2, 1, 4, 39, 1)
IP-MIB::ipv6RouterAdvertIfIndex == (1, 3, 6, 1, 2, 1, 4, 39, 1, 1)
IP-MIB::ipv6RouterAdvertSendAdverts == (1, 3, 6, 1, 2, 1, 4, 39, 1, 2)
IP-MIB::ipv6RouterAdvertMaxInterval == (1, 3, 6, 1, 2, 1, 4, 39, 1, 3)
IP-MIB::ipv6RouterAdvertMinInterval == (1, 3, 6, 1, 2, 1, 4, 39, 1, 4)
IP-MIB::ipv6RouterAdvertManagedFlag == (1, 3, 6, 1, 2, 1, 4, 39, 1, 5)
IP-MIB::ipv6RouterAdvertOtherConfigFlag == (1, 3, 6, 1, 2, 1, 4, 39, 1, 6)
IP-MIB::ipv6RouterAdvertLinkMTU == (1, 3, 6, 1, 2, 1, 4, 39, 1, 7)
IP-MIB::ipv6RouterAdvertReachableTime == (1, 3, 6, 1, 2, 1, 4, 39, 1, 8)
IP-MIB::ipv6RouterAdvertRetransmitTime == (1, 3, 6, 1, 2, 1, 4, 39, 1, 9)
IP-MIB::ipv6RouterAdvertCurHopLimit == (1, 3, 6, 1, 2, 1, 4, 39, 1, 10)
IP-MIB::ipv6RouterAdvertDefaultLifetime == (1, 3, 6, 1, 2, 1, 4, 39, 1, 11)
IP-MIB::ipv6RouterAdvertRowStatus == (1, 3, 6, 1, 2, 1, 4, 39, 1, 12)
IP-MIB::icmp == (1, 3, 6, 1, 2, 1, 5)
IP-MIB::icmpInMsgs == (1, 3, 6, 1, 2, 1, 5, 1)
IP-MIB::icmpInErrors == (1, 3, 6, 1, 2, 1, 5, 2)
IP-MIB::icmpInDestUnreachs == (1, 3, 6, 1, 2, 1, 5, 3)
IP-MIB::icmpInTimeExcds == (1, 3, 6, 1, 2, 1, 5, 4)
IP-MIB::icmpInParmProbs == (1, 3, 6, 1, 2, 1, 5, 5)
IP-MIB::icmpInSrcQuenchs == (1, 3, 6, 1, 2, 1, 5, 6)
IP-MIB::icmpInRedirects == (1, 3, 6, 1, 2, 1, 5, 7)
IP-MIB::icmpInEchos == (1, 3, 6, 1, 2, 1, 5, 8)
IP-MIB::icmpInEchoReps == (1, 3, 6, 1, 2, 1, 5, 9)
IP-MIB::icmpInTimestamps == (1, 3, 6, 1, 2, 1, 5, 10)
IP-MIB::icmpInTimestampReps == (1, 3, 6, 1, 2, 1, 5, 11)
IP-MIB::icmpInAddrMasks == (1, 3, 6, 1, 2, 1, 5, 12)
IP-MIB::icmpInAddrMaskReps == (1, 3, 6, 1, 2, 1, 5, 13)
IP-MIB::icmpOutMsgs == (1, 3, 6, 1, 2, 1, 5, 14)
IP-MIB::icmpOutErrors == (1, 3, 6, 1, 2, 1, 5, 15)
IP-MIB::icmpOutDestUnreachs == (1, 3, 6, 1, 2, 1, 5, 16)
IP-MIB::icmpOutTimeExcds == (1, 3, 6, 1, 2, 1, 5, 17)
IP-MIB::icmpOutParmProbs == (1, 3, 6, 1, 2, 1, 5, 18)
IP-MIB::icmpOutSrcQuenchs == (1, 3, 6, 1, 2, 1, 5, 19)
IP-MIB::icmpOutRedirects == (1, 3, 6, 1, 2, 1, 5, 20)
IP-MIB::icmpOutEchos == (1, 3, 6, 1, 2, 1, 5, 21)
IP-MIB::icmpOutEchoReps == (1, 3, 6, 1, 2, 1, 5, 22)
IP-MIB::icmpOutTimestamps == (1, 3, 6, 1, 2, 1, 5, 23)
IP-MIB::icmpOutTimestampReps == (1, 3, 6, 1, 2, 1, 5, 24)
IP-MIB::icmpOutAddrMasks == (1, 3, 6, 1, 2, 1, 5, 25)
IP-MIB::icmpOutAddrMaskReps == (1, 3, 6, 1, 2, 1, 5, 26)
IP-MIB::icmpStatsTable == (1, 3, 6, 1, 2, 1, 5, 29)
IP-MIB::icmpStatsEntry == (1, 3, 6, 1, 2, 1, 5, 29, 1)
IP-MIB::icmpStatsIPVersion == (1, 3, 6, 1, 2, 1, 5, 29, 1, 1)
IP-MIB::icmpStatsInMsgs == (1, 3, 6, 1, 2, 1, 5, 29, 1, 2)
IP-MIB::icmpStatsInErrors == (1, 3, 6, 1, 2, 1, 5, 29, 1, 3)
IP-MIB::icmpStatsOutMsgs == (1, 3, 6, 1, 2, 1, 5, 29, 1, 4)
IP-MIB::icmpStatsOutErrors == (1, 3, 6, 1, 2, 1, 5, 29, 1, 5)
IP-MIB::icmpMsgStatsTable == (1, 3, 6, 1, 2, 1, 5, 30)
IP-MIB::icmpMsgStatsEntry == (1, 3, 6, 1, 2, 1, 5, 30, 1)
IP-MIB::icmpMsgStatsIPVersion == (1, 3, 6, 1, 2, 1, 5, 30, 1, 1)
IP-MIB::icmpMsgStatsType == (1, 3, 6, 1, 2, 1, 5, 30, 1, 2)
IP-MIB::icmpMsgStatsInPkts == (1, 3, 6, 1, 2, 1, 5, 30, 1, 3)
IP-MIB::icmpMsgStatsOutPkts == (1, 3, 6, 1, 2, 1, 5, 30, 1, 4)
SNMPv2-SMI::transmission == (1, 3, 6, 1, 2, 1, 10)
SNMPv2-MIB::snmp == (1, 3, 6, 1, 2, 1, 11)
SNMPv2-MIB::snmpInPkts == (1, 3, 6, 1, 2, 1, 11, 1)
SNMPv2-MIB::snmpOutPkts == (1, 3, 6, 1, 2, 1, 11, 2)
SNMPv2-MIB::snmpInBadVersions == (1, 3, 6, 1, 2, 1, 11, 3)
SNMPv2-MIB::snmpInBadCommunityNames == (1, 3, 6, 1, 2, 1, 11, 4)
SNMPv2-MIB::snmpInBadCommunityUses == (1, 3, 6, 1, 2, 1, 11, 5)
SNMPv2-MIB::snmpInASNParseErrs == (1, 3, 6, 1, 2, 1, 11, 6)
SNMPv2-MIB::snmpInTooBigs == (1, 3, 6, 1, 2, 1, 11, 8)
SNMPv2-MIB::snmpInNoSuchNames == (1, 3, 6, 1, 2, 1, 11, 9)
SNMPv2-MIB::snmpInBadValues == (1, 3, 6, 1, 2, 1, 11, 10)
SNMPv2-MIB::snmpInReadOnlys == (1, 3, 6, 1, 2, 1, 11, 11)
SNMPv2-MIB::snmpInGenErrs == (1, 3, 6, 1, 2, 1, 11, 12)
SNMPv2-MIB::snmpInTotalReqVars == (1, 3, 6, 1, 2, 1, 11, 13)
SNMPv2-MIB::snmpInTotalSetVars == (1, 3, 6, 1, 2, 1, 11, 14)
SNMPv2-MIB::snmpInGetRequests == (1, 3, 6, 1, 2, 1, 11, 15)
SNMPv2-MIB::snmpInGetNexts == (1, 3, 6, 1, 2, 1, 11, 16)
SNMPv2-MIB::snmpInSetRequests == (1, 3, 6, 1, 2, 1, 11, 17)
SNMPv2-MIB::snmpInGetResponses == (1, 3, 6, 1, 2, 1, 11, 18)
SNMPv2-MIB::snmpInTraps == (1, 3, 6, 1, 2, 1, 11, 19)
SNMPv2-MIB::snmpOutTooBigs == (1, 3, 6, 1, 2, 1, 11, 20)
SNMPv2-MIB::snmpOutNoSuchNames == (1, 3, 6, 1, 2, 1, 11, 21)
SNMPv2-MIB::snmpOutBadValues == (1, 3, 6, 1, 2, 1, 11, 22)
SNMPv2-MIB::snmpOutGenErrs == (1, 3, 6, 1, 2, 1, 11, 24)
SNMPv2-MIB::snmpOutGetRequests == (1, 3, 6, 1, 2, 1, 11, 25)
SNMPv2-MIB::snmpOutGetNexts == (1, 3, 6, 1, 2, 1, 11, 26)
SNMPv2-MIB::snmpOutSetRequests == (1, 3, 6, 1, 2, 1, 11, 27)
SNMPv2-MIB::snmpOutGetResponses == (1, 3, 6, 1, 2, 1, 11, 28)
SNMPv2-MIB::snmpOutTraps == (1, 3, 6, 1, 2, 1, 11, 29)
SNMPv2-MIB::snmpEnableAuthenTraps == (1, 3, 6, 1, 2, 1, 11, 30)
SNMPv2-MIB::snmpSilentDrops == (1, 3, 6, 1, 2, 1, 11, 31)
SNMPv2-MIB::snmpProxyDrops == (1, 3, 6, 1, 2, 1, 11, 32)
IANAifType-MIB::ianaifType == (1, 3, 6, 1, 2, 1, 30)
IF-MIB::ifMIB == (1, 3, 6, 1, 2, 1, 31)
IF-MIB::ifMIBObjects == (1, 3, 6, 1, 2, 1, 31, 1)
IF-MIB::ifXTable == (1, 3, 6, 1, 2, 1, 31, 1, 1)
IF-MIB::ifXEntry == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1)
IF-MIB::ifName == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 1)
IF-MIB::ifInMulticastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 2)
IF-MIB::ifInBroadcastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 3)
IF-MIB::ifOutMulticastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 4)
IF-MIB::ifOutBroadcastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 5)
IF-MIB::ifHCInOctets == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 6)
IF-MIB::ifHCInUcastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 7)
IF-MIB::ifHCInMulticastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 8)
IF-MIB::ifHCInBroadcastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 9)
IF-MIB::ifHCOutOctets == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 10)
IF-MIB::ifHCOutUcastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 11)
IF-MIB::ifHCOutMulticastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 12)
IF-MIB::ifHCOutBroadcastPkts == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 13)
IF-MIB::ifLinkUpDownTrapEnable == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 14)
IF-MIB::ifHighSpeed == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 15)
IF-MIB::ifPromiscuousMode == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 16)
IF-MIB::ifConnectorPresent == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 17)
IF-MIB::ifAlias == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 18)
IF-MIB::ifCounterDiscontinuityTime == (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 19)
IF-MIB::ifStackTable == (1, 3, 6, 1, 2, 1, 31, 1, 2)
IF-MIB::ifStackEntry == (1, 3, 6, 1, 2, 1, 31, 1, 2, 1)
IF-MIB::ifStackHigherLayer == (1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 1)
IF-MIB::ifStackLowerLayer == (1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 2)
IF-MIB::ifStackStatus == (1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 3)
IF-MIB::ifTestTable == (1, 3, 6, 1, 2, 1, 31, 1, 3)
IF-MIB::ifTestEntry == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1)
IF-MIB::ifTestId == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 1)
IF-MIB::ifTestStatus == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 2)
IF-MIB::ifTestType == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 3)
IF-MIB::ifTestResult == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 4)
IF-MIB::ifTestCode == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 5)
IF-MIB::ifTestOwner == (1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 6)
IF-MIB::ifRcvAddressTable == (1, 3, 6, 1, 2, 1, 31, 1, 4)
IF-MIB::ifRcvAddressEntry == (1, 3, 6, 1, 2, 1, 31, 1, 4, 1)
IF-MIB::ifRcvAddressAddress == (1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 1)
IF-MIB::ifRcvAddressStatus == (1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 2)
IF-MIB::ifRcvAddressType == (1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 3)
IF-MIB::ifTableLastChange == (1, 3, 6, 1, 2, 1, 31, 1, 5)
IF-MIB::ifStackLastChange == (1, 3, 6, 1, 2, 1, 31, 1, 6)
IF-MIB::ifConformance == (1, 3, 6, 1, 2, 1, 31, 2)
IF-MIB::ifGroups == (1, 3, 6, 1, 2, 1, 31, 2, 1)
IF-MIB::ifGeneralGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 1)
IF-MIB::ifFixedLengthGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 2)
IF-MIB::ifHCFixedLengthGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 3)
IF-MIB::ifPacketGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 4)
IF-MIB::ifHCPacketGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 5)
IF-MIB::ifVHCPacketGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 6)
IF-MIB::ifRcvAddressGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 7)
IF-MIB::ifTestGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 8)
IF-MIB::ifStackGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 9)
IF-MIB::ifGeneralInformationGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 10)
IF-MIB::ifStackGroup2 == (1, 3, 6, 1, 2, 1, 31, 2, 1, 11)
IF-MIB::ifOldObjectsGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 12)
IF-MIB::ifCounterDiscontinuityGroup == (1, 3, 6, 1, 2, 1, 31, 2, 1, 13)
IF-MIB::ifCompliances == (1, 3, 6, 1, 2, 1, 31, 2, 2)
IF-MIB::ifCompliance == (1, 3, 6, 1, 2, 1, 31, 2, 2, 1)
IF-MIB::ifCompliance2 == (1, 3, 6, 1, 2, 1, 31, 2, 2, 2)
IP-MIB::ipMIB == (1, 3, 6, 1, 2, 1, 48)
IP-MIB::ipMIBConformance == (1, 3, 6, 1, 2, 1, 48, 2)
IP-MIB::ipMIBCompliances == (1, 3, 6, 1, 2, 1, 48, 2, 1)
IP-MIB::ipMIBCompliance == (1, 3, 6, 1, 2, 1, 48, 2, 1, 1)
IP-MIB::ipMIBCompliance2 == (1, 3, 6, 1, 2, 1, 48, 2, 1, 2)
IP-MIB::ipMIBGroups == (1, 3, 6, 1, 2, 1, 48, 2, 2)
IP-MIB::ipGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 1)
IP-MIB::icmpGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 2)
IP-MIB::ipv4GeneralGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 3)
IP-MIB::ipv4IfGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 4)
IP-MIB::ipv6GeneralGroup2 == (1, 3, 6, 1, 2, 1, 48, 2, 2, 5)
IP-MIB::ipv6IfGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 6)
IP-MIB::ipLastChangeGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 7)
IP-MIB::ipSystemStatsGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 8)
IP-MIB::ipv4SystemStatsGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 9)
IP-MIB::ipSystemStatsHCOctetGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 10)
IP-MIB::ipSystemStatsHCPacketGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 11)
IP-MIB::ipv4SystemStatsHCPacketGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 12)
IP-MIB::ipIfStatsGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 13)
IP-MIB::ipv4IfStatsGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 14)
IP-MIB::ipIfStatsHCOctetGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 15)
IP-MIB::ipIfStatsHCPacketGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 16)
IP-MIB::ipv4IfStatsHCPacketGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 17)
IP-MIB::ipAddressPrefixGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 18)
IP-MIB::ipAddressGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 19)
IP-MIB::ipNetToPhysicalGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 20)
IP-MIB::ipv6ScopeGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 21)
IP-MIB::ipDefaultRouterGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 22)
IP-MIB::ipv6RouterAdvertGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 23)
IP-MIB::icmpStatsGroup == (1, 3, 6, 1, 2, 1, 48, 2, 2, 24)
INET-ADDRESS-MIB::inetAddressMIB == (1, 3, 6, 1, 2, 1, 76)
SNMPv2-SMI::experimental == (1, 3, 6, 1, 3)
SNMPv2-SMI::private == (1, 3, 6, 1, 4)
SNMPv2-SMI::enterprises == (1, 3, 6, 1, 4, 1)
SNMPv2-SMI::security == (1, 3, 6, 1, 5)
SNMPv2-SMI::snmpV2 == (1, 3, 6, 1, 6)
SNMPv2-SMI::snmpDomains == (1, 3, 6, 1, 6, 1)
SNMPv2-SMI::snmpProxys == (1, 3, 6, 1, 6, 2)
SNMPv2-SMI::snmpModules == (1, 3, 6, 1, 6, 3)
SNMPv2-MIB::snmpMIB == (1, 3, 6, 1, 6, 3, 1)
SNMPv2-MIB::snmpMIBObjects == (1, 3, 6, 1, 6, 3, 1, 1)
SNMPv2-MIB::snmpTrap == (1, 3, 6, 1, 6, 3, 1, 1, 4)
SNMPv2-MIB::snmpTrapOID == (1, 3, 6, 1, 6, 3, 1, 1, 4, 1)
SNMPv2-MIB::snmpTrapEnterprise == (1, 3, 6, 1, 6, 3, 1, 1, 4, 3)
SNMPv2-MIB::snmpTraps == (1, 3, 6, 1, 6, 3, 1, 1, 5)
SNMPv2-MIB::coldStart == (1, 3, 6, 1, 6, 3, 1, 1, 5, 1)
SNMPv2-MIB::warmStart == (1, 3, 6, 1, 6, 3, 1, 1, 5, 2)
IF-MIB::linkDown == (1, 3, 6, 1, 6, 3, 1, 1, 5, 3)
IF-MIB::linkUp == (1, 3, 6, 1, 6, 3, 1, 1, 5, 4)
SNMPv2-MIB::authenticationFailure == (1, 3, 6, 1, 6, 3, 1, 1, 5, 5)
SNMPv2-MIB::snmpSet == (1, 3, 6, 1, 6, 3, 1, 1, 6)
SNMPv2-MIB::snmpSetSerialNo == (1, 3, 6, 1, 6, 3, 1, 1, 6, 1)
SNMPv2-MIB::snmpMIBConformance == (1, 3, 6, 1, 6, 3, 1, 2)
SNMPv2-MIB::snmpMIBCompliances == (1, 3, 6, 1, 6, 3, 1, 2, 1)
SNMPv2-MIB::snmpBasicCompliance == (1, 3, 6, 1, 6, 3, 1, 2, 1, 2)
SNMPv2-MIB::snmpBasicComplianceRev2 == (1, 3, 6, 1, 6, 3, 1, 2, 1, 3)
SNMPv2-MIB::snmpMIBGroups == (1, 3, 6, 1, 6, 3, 1, 2, 2)
SNMPv2-MIB::snmpSetGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 5)
SNMPv2-MIB::systemGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 6)
SNMPv2-MIB::snmpBasicNotificationsGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 7)
SNMPv2-MIB::snmpGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 8)
SNMPv2-MIB::snmpCommunityGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 9)
SNMPv2-MIB::snmpObsoleteGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 10)
SNMPv2-MIB::snmpWarmStartNotificationGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 11)
SNMPv2-MIB::snmpNotificationGroup == (1, 3, 6, 1, 6, 3, 1, 2, 2, 12)
SNMP-FRAMEWORK-MIB::snmpFrameworkMIB == (1, 3, 6, 1, 6, 3, 10)
SNMP-FRAMEWORK-MIB::snmpFrameworkAdmin == (1, 3, 6, 1, 6, 3, 10, 1)
SNMP-FRAMEWORK-MIB::snmpAuthProtocols == (1, 3, 6, 1, 6, 3, 10, 1, 1)
SNMP-FRAMEWORK-MIB::snmpPrivProtocols == (1, 3, 6, 1, 6, 3, 10, 1, 2)
SNMP-FRAMEWORK-MIB::snmpFrameworkMIBObjects == (1, 3, 6, 1, 6, 3, 10, 2)
SNMP-FRAMEWORK-MIB::snmpEngine == (1, 3, 6, 1, 6, 3, 10, 2, 1)
SNMP-FRAMEWORK-MIB::snmpEngineID == (1, 3, 6, 1, 6, 3, 10, 2, 1, 1)
SNMP-FRAMEWORK-MIB::snmpEngineBoots == (1, 3, 6, 1, 6, 3, 10, 2, 1, 2)
SNMP-FRAMEWORK-MIB::snmpEngineTime == (1, 3, 6, 1, 6, 3, 10, 2, 1, 3)
SNMP-FRAMEWORK-MIB::snmpEngineMaxMessageSize == (1, 3, 6, 1, 6, 3, 10, 2, 1, 4)
SNMP-FRAMEWORK-MIB::snmpFrameworkMIBConformance == (1, 3, 6, 1, 6, 3, 10, 3)
SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliances == (1, 3, 6, 1, 6, 3, 10, 3, 1)
SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance == (1, 3, 6, 1, 6, 3, 10, 3, 1, 1)
SNMP-FRAMEWORK-MIB::snmpFrameworkMIBGroups == (1, 3, 6, 1, 6, 3, 10, 3, 2)
SNMP-FRAMEWORK-MIB::snmpEngineGroup == (1, 3, 6, 1, 6, 3, 10, 3, 2, 1)
SNMP-TARGET-MIB::snmpTargetMIB == (1, 3, 6, 1, 6, 3, 12)
SNMP-TARGET-MIB::snmpTargetObjects == (1, 3, 6, 1, 6, 3, 12, 1)
SNMP-TARGET-MIB::snmpTargetSpinLock == (1, 3, 6, 1, 6, 3, 12, 1, 1)
SNMP-TARGET-MIB::snmpTargetAddrTable == (1, 3, 6, 1, 6, 3, 12, 1, 2)
SNMP-TARGET-MIB::snmpTargetAddrEntry == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1)
SNMP-TARGET-MIB::snmpTargetAddrName == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 1)
SNMP-TARGET-MIB::snmpTargetAddrTDomain == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 2)
SNMP-TARGET-MIB::snmpTargetAddrTAddress == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 3)
SNMP-TARGET-MIB::snmpTargetAddrTimeout == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 4)
SNMP-TARGET-MIB::snmpTargetAddrRetryCount == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 5)
SNMP-TARGET-MIB::snmpTargetAddrTagList == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 6)
SNMP-TARGET-MIB::snmpTargetAddrParams == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 7)
SNMP-TARGET-MIB::snmpTargetAddrStorageType == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 8)
SNMP-TARGET-MIB::snmpTargetAddrRowStatus == (1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 9)
SNMP-TARGET-MIB::snmpTargetParamsTable == (1, 3, 6, 1, 6, 3, 12, 1, 3)
SNMP-TARGET-MIB::snmpTargetParamsEntry == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1)
SNMP-TARGET-MIB::snmpTargetParamsName == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 1)
SNMP-TARGET-MIB::snmpTargetParamsMPModel == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 2)
SNMP-TARGET-MIB::snmpTargetParamsSecurityModel == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 3)
SNMP-TARGET-MIB::snmpTargetParamsSecurityName == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 4)
SNMP-TARGET-MIB::snmpTargetParamsSecurityLevel == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 5)
SNMP-TARGET-MIB::snmpTargetParamsStorageType == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 6)
SNMP-TARGET-MIB::snmpTargetParamsRowStatus == (1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 7)
SNMP-TARGET-MIB::snmpUnavailableContexts == (1, 3, 6, 1, 6, 3, 12, 1, 4)
SNMP-TARGET-MIB::snmpUnknownContexts == (1, 3, 6, 1, 6, 3, 12, 1, 5)
SNMP-TARGET-MIB::snmpTargetConformance == (1, 3, 6, 1, 6, 3, 12, 3)
SNMP-TARGET-MIB::snmpTargetCompliances == (1, 3, 6, 1, 6, 3, 12, 3, 1)
SNMP-TARGET-MIB::snmpTargetCommandResponderCompliance == (1, 3, 6, 1, 6, 3, 12, 3, 1, 1)
SNMP-TARGET-MIB::snmpTargetGroups == (1, 3, 6, 1, 6, 3, 12, 3, 2)
SNMP-TARGET-MIB::snmpTargetBasicGroup == (1, 3, 6, 1, 6, 3, 12, 3, 2, 1)
SNMP-TARGET-MIB::snmpTargetResponseGroup == (1, 3, 6, 1, 6, 3, 12, 3, 2, 2)
SNMP-TARGET-MIB::snmpTargetCommandResponderGroup == (1, 3, 6, 1, 6, 3, 12, 3, 2, 3)
SNMP-COMMUNITY-MIB::snmpCommunityMIB == (1, 3, 6, 1, 6, 3, 18)
SNMP-COMMUNITY-MIB::snmpCommunityMIBObjects == (1, 3, 6, 1, 6, 3, 18, 1)
SNMP-COMMUNITY-MIB::snmpCommunityTable == (1, 3, 6, 1, 6, 3, 18, 1, 1)
SNMP-COMMUNITY-MIB::snmpCommunityEntry == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1)
SNMP-COMMUNITY-MIB::snmpCommunityIndex == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 1)
SNMP-COMMUNITY-MIB::snmpCommunityName == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 2)
SNMP-COMMUNITY-MIB::snmpCommunitySecurityName == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 3)
SNMP-COMMUNITY-MIB::snmpCommunityContextEngineID == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 4)
SNMP-COMMUNITY-MIB::snmpCommunityContextName == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 5)
SNMP-COMMUNITY-MIB::snmpCommunityTransportTag == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 6)
SNMP-COMMUNITY-MIB::snmpCommunityStorageType == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 7)
SNMP-COMMUNITY-MIB::snmpCommunityStatus == (1, 3, 6, 1, 6, 3, 18, 1, 1, 1, 8)
SNMP-COMMUNITY-MIB::snmpTargetAddrExtTable == (1, 3, 6, 1, 6, 3, 18, 1, 2)
SNMP-COMMUNITY-MIB::snmpTargetAddrExtEntry == (1, 3, 6, 1, 6, 3, 18, 1, 2, 1)
SNMP-COMMUNITY-MIB::snmpTargetAddrTMask == (1, 3, 6, 1, 6, 3, 18, 1, 2, 1, 1)
SNMP-COMMUNITY-MIB::snmpTargetAddrMMS == (1, 3, 6, 1, 6, 3, 18, 1, 2, 1, 2)
SNMP-COMMUNITY-MIB::snmpTrapAddress == (1, 3, 6, 1, 6, 3, 18, 1, 3)
SNMP-COMMUNITY-MIB::snmpTrapCommunity == (1, 3, 6, 1, 6, 3, 18, 1, 4)
SNMP-COMMUNITY-MIB::snmpCommunityMIBConformance == (1, 3, 6, 1, 6, 3, 18, 2)
SNMP-COMMUNITY-MIB::snmpCommunityMIBCompliances == (1, 3, 6, 1, 6, 3, 18, 2, 1)
SNMP-COMMUNITY-MIB::snmpCommunityMIBCompliance == (1, 3, 6, 1, 6, 3, 18, 2, 1, 1)
SNMP-COMMUNITY-MIB::snmpProxyTrapForwardCompliance == (1, 3, 6, 1, 6, 3, 18, 2, 1, 2)
SNMP-COMMUNITY-MIB::snmpCommunityMIBFullCompliance == (1, 3, 6, 1, 6, 3, 18, 2, 1, 3)
SNMP-COMMUNITY-MIB::snmpCommunityMIBGroups == (1, 3, 6, 1, 6, 3, 18, 2, 2)
SNMP-COMMUNITY-MIB::snmpCommunityTableGroup == (1, 3, 6, 1, 6, 3, 18, 2, 2, 1)
SNMP-COMMUNITY-MIB::snmpProxyTrapForwardGroup == (1, 3, 6, 1, 6, 3, 18, 2, 2, 3)
SNMPv2-SMI::joint-iso-itu-t == (2,)
Modules traversal
ASN1
ASN1-ENUMERATION
ASN1-REFINEMENT
IANAifType-MIB
IF-MIB
INET-ADDRESS-MIB
IP-MIB
SNMP-COMMUNITY-MIB
SNMP-FRAMEWORK-MIB
SNMP-TARGET-MIB
SNMPv2-CONF
SNMPv2-MIB
SNMPv2-SMI
SNMPv2-TC
-- **********************************************************************
-- **********************************************************************
-- **
-- **  COPYRIGHT      (c) 2006 Rohde & Schwarz GmbH & Co. KG
-- **                          Muehldorfstrasse 15
-- **    R & S                 81671 Muenchen
-- **
-- ** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- **
-- **  MODULE         RS-COMMON-MIB.my
-- **  
-- **  DESCRIPTION    Rohde & Schwarz common SNMP mib
-- **
-- **  HISTORY        2010-08-09 Christian Hoelzl
-- **                 rsProdRadioCommEquipment added
-- **
-- **                 05/27/2008 Christian Hoelzl
-- **                 rsProdBroadcastHeadend added
-- **
-- **                 05/07/2008 Christian Hoelzl
-- **                 rsProdRadioCommSystems added
-- **
-- **                 10/31/2007 Christian Hoelzl
-- **                 rsProdRadioCommunications added
-- **                 rsProdRadioCommCommon added
-- **                 rsProdRadioCommSeries4200 added
-- **
-- **                 09/05/2006 Christian Hoelzl
-- **                 rsCrypto added
-- **
-- **                 06/24/2005 Christian Hoelzl
-- **                 first version
-- **
-- ** +-iso(1)
-- **   +-org(3)
-- **     +-dod(6)
-- **       +-internet(1)
-- **         +-private(4)
-- **           +-enterprises(1)
-- **             +-rsRoot(2566)
-- **               +-rsCommon(123)
-- **               +-rsProduct(127)
-- **               | +-rsProdBroadcast(1)
-- **               | | +-rsProdBroadcastMeasurement(1)
-- **               | | +-rsProdBroadcastTransmitter(2)
-- **               | | +-rsProdBroadcastHeadend(3)
-- **               | |
-- **               | +-rsProdRadioCommunications(2)
-- **               |   +-rsProdRadioCommCommon(1)
-- **               |   +-rsProdRadioCommSeries4200(2)
-- **               |   +-rsProdRadioCommSystems(3)
-- **               |   +-rsPrdoRadioCommEquipment(4)
-- **               |
-- **               +-rsRequirements(131)
-- **               +-rsExperimental(137)
-- **               +-rsCapabilities(139)
-- **               +-rsRegistration(149)
-- **               | +-rsRegModules(1)
-- **               | +-rsRegBroadcast(2)
-- **               |   +-rsRegBroadcastMeasurement(1)
-- **               |   +-rsRegBroadcastTransmitter(2)
-- **               |
-- **               +-rsCrypto(151)
-- ** 
-- **
-- **********************************************************************
-- **********************************************************************

  RS-COMMON-MIB DEFINITIONS ::= BEGIN

    IMPORTS enterprises, OBJECT-IDENTITY, MODULE-IDENTITY FROM SNMPv2-SMI;

    rsRoot MODULE-IDENTITY
        LAST-UPDATED "201008090803Z" -- August 9th 2010 at 08:03 GMT
        ORGANIZATION 
                "Rohde&Schwarz GmbH & Co.KG"
        CONTACT-INFO 
                "Rohde & Schwarz GmbH & Co. KG
                 Muehldorfstrasse 15
                 81671 Munich
                 Germany"
          DESCRIPTION 
            "The root OID of Rohde&Schwarz GmbH & Co.KG"
        REVISION "201008090803Z" -- August 9th 2010 at 08:03 GMT
          DESCRIPTION 
            "MODULE-IDENTITY added to RS-COMMON-MIB"
        ::= { enterprises 2566 }

    rsCommon OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for common object and event definitions"
        ::= { rsRoot 113 }

    rsProducts OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for products."
        ::= { rsRoot 127 }

    rsProdBroadcast OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast products."
        ::= { rsProducts 1 }

    rsProdBroadcastMeasurement OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast measurement products."
        ::= { rsProdBroadcast 1 }

    rsProdBroadcastTransmitter OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast transmitter products."
        ::= { rsProdBroadcast 2 }

    rsProdBroadcastHeadend OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast headend products."
        ::= { rsProdBroadcast 3 }

    rsProdRadioCommunications OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication products."
        ::= { rsProducts 2 }

    rsProdRadioCommCommon OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication product common features."
        ::= { rsProdRadioCommunications 1 }

    rsProdRadioCommSeries4200 OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication series 4200."
        ::= { rsProdRadioCommunications 2 }

    rsProdRadioCommSystems OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication systems."
        ::= { rsProdRadioCommunications 3 }

    rsProdRadioCommEquipment OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication equipment."
        ::= { rsProdRadioCommunications 4 }

    rsRequirements OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for management application requirements"
        ::= { rsRoot 131 }

    rsExperimental OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for experimental definitions"
        ::= { rsRoot 137 }

    rsCapabilities OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for agent capabilities"
        ::= { rsRoot 139 }

    rsRegistration OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for registrations"
        ::= { rsRoot 149 }

    rsRegModules OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for modules registrations"
        ::= { rsRegistration 1 }

    rsRegBroadcast OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Description."
        ::= { rsRegistration 2 }

    rsRegBroadcastMeasurement OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Description."
        ::= { rsRegBroadcast 1 }

    rsRegBroadcastTransmitter OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Description."
        ::= { rsRegBroadcast 2 }

    rsCrypto OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for crypto algorithms"
        ::= { rsRoot 151 }

    END

--
-- RS-COMMON-MIB.my
--
etingof commented 7 years ago

Do you have your MIB (RS-COMMON-MIB.my) specified in .loadModules()?

mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-FRAMEWORK-MIB', 'SNMP-COMMUNITY-MIB', 'IP-MIB')
BusbyActual commented 7 years ago

I sure didn't. I see what you mean by the MIB order in the loadingModules method. I have it working as expected now. The code for output to the console has a plug for nodeDesc. Are their ways to pull DESCRIPTION or STATUS as well? I've been looking at the docs and can't find much on the mibView.getNodeLocation method.

 rsRoot MODULE-IDENTITY
        LAST-UPDATED "201008090803Z" -- August 9th 2010 at 08:03 GMT
        ORGANIZATION 
                "Rohde&Schwarz GmbH & Co.KG"
        CONTACT-INFO 
                "Rohde & Schwarz GmbH & Co. KG
                 Muehldorfstrasse 15
                 81671 Munich
                 Germany"
          DESCRIPTION 
            "The root OID of Rohde&Schwarz GmbH & Co.KG"
        REVISION "201008090803Z" -- August 9th 2010 at 08:03 GMT
          DESCRIPTION 
            "MODULE-IDENTITY added to RS-COMMON-MIB"
        ::= { enterprises 2566 }
print('MIB tree traversal')
oid, label, suffix = mibView.getFirstNodeName()
while 1:
    try:
        modName, nodeDesc, suffix = mibView.getNodeLocation(oid)
        print('%s::%s == %s' % (modName, nodeDesc, oid))
        oid, label, suffix = mibView.getNextNodeName(oid)
    except error.NoSuchObjectError:
        break
etingof commented 7 years ago

Are their ways to pull DESCRIPTION or STATUS as well?

Sure, you should be able to get everything from MIB definitions. These methods are not yet documented -- this is something to be done in the nearest future.

Meanwhile, I can refer you to the code.

Make sure to pass genTexts=True to the MIB compiler if you want all the text (e.g. DESCRIPTION) to be put into .py files. You may need to wipe out everything from ~/.pysnmp/mibs/ for this change to take effect.

compiler.addMibCompiler(mibBuilder, sources=['/users/admin/desktop/mib/mibfiles/', 
                                             'http://mibs.snmplabs.com/asn1/'], genTexts=True)
BusbyActual commented 7 years ago

Hmm I'm not too familiar with Python. JavaScript is my bread and butter. I'm trying to figure out where to invoke the method my guess is mibBuilder.ObjectIdentity.getDescription because ObjectIdentity is exported from mibBuilder.exportSymbols however that doesn't work. Could you provide an example? Also, I'm looking at the mibBuilder methods addMibCompiler and addMibSources is their support for passing a MIB as JSON as opposed to a flat file?

etingof commented 7 years ago

The MIBs and the objects defined in MIBs are maintained by the MibBuilder by the MIB module name + MIB object name pair:

mibName, objName = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID'
mibObj, = mibBuilder.importSymbols(mibName, objName)

Once you have the MIB object you can get all the information it has:

print(mibObj.getDescription())

Additionally, the MibViewController maintains its own independent index by OID (as well as other helpful indices). So if you have an OID and want the description of associated object, you first need to ask MibViewController what's the name of the MIB object having this OID:

    mibName, objName, restOfOid = mibView.getNodeLocation(oid)

Then look up the MIB object:

mibObj, = mibBuilder.importSymbols(mibName, objName)

And inspect it.

If you give it a longer OID (most commonly, the tail of the OID would refer to MIB object instance in SNMP terms), then that tail part would be returned as-is.

BusbyActual commented 7 years ago

I think I understand how the methods interact with each other from your explanation. When I follow the example with using the custom MIB and object name I get errors. When I use the samples in the loop it doesn't provide the correct description. Maybe I'm missing something?

Error

Traceback (most recent call last):
  File "test.py", line 87, in <module>
    mibObj, = mibBuilder.importSymbols(mibName, objName)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pysnmp/smi/builder.py", line 407, in importSymbols
    'No symbol %s::%s at %s' % (modName, symName, self)
pysnmp.smi.error.SmiError: No symbol RS-COMMON-MIB::snmpEngineID at <pysnmp.smi.builder.MibBuilder object at 0x1014a3dd8>

Code

print('MIB tree traversal')
oid, label, suffix = mibView.getFirstNodeName()
while 1:
    try:
        mibName, objName = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID'
        mibObj, = mibBuilder.importSymbols(mibName, objName)
        modName, nodeDesc, suffix = mibView.getNodeLocation(oid)
        # mibObj, = mibBuilder.importSymbols(modName, nodeDesc)
        print(mibObj.getDescription())

        print('%s::%s == %s && %s' % (modName, nodeDesc, oid, mibObj))
        oid, label, suffix = mibView.getNextNodeName(oid)

    except error.NoSuchObjectError:
        break

Output


RS-XX9-SMI-MIB::rsXx9DvbT == (1, 3, 6, 1, 4, 1, 2566, 127, 1, 2, 216, 6) && MibScalar((1, 3, 6, 1, 6, 3, 10, 2, 1, 1), SnmpEngineID())
BusbyActual commented 7 years ago

I checked my .py mibs that are generated and they also don't have the description. I can see STATUS and MAXACCESS are converted in the .py files. So I'm assuming if it was to be processed properly the data would reside there as well?

RS-COMMON-MIB.py

#
# PySNMP MIB module RS-COMMON-MIB (http://pysnmp.sf.net)
# ASN.1 source file:///users/admin/desktop/mib/mibFiles/RS-COMMON-MIB.mib
# Produced by pysmi-0.1.3 at Fri Jul 21 11:27:16 2017
# On host Busby.local platform Darwin version 15.6.0 by user admin
# Using Python version 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) 
#
Integer, ObjectIdentifier, OctetString = mibBuilder.importSymbols("ASN1", "Integer", "ObjectIdentifier", "OctetString")
NamedValues, = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues")
ValueRangeConstraint, SingleValueConstraint, ConstraintsUnion, ConstraintsIntersection, ValueSizeConstraint = mibBuilder.importSymbols("ASN1-REFINEMENT", "ValueRangeConstraint", "SingleValueConstraint", "ConstraintsUnion", "ConstraintsIntersection", "ValueSizeConstraint")
ModuleCompliance, NotificationGroup = mibBuilder.importSymbols("SNMPv2-CONF", "ModuleCompliance", "NotificationGroup")
MibIdentifier, NotificationType, ModuleIdentity, Gauge32, IpAddress, enterprises, Bits, Integer32, Counter64, TimeTicks, MibScalar, MibTable, MibTableRow, MibTableColumn, Counter32, Unsigned32, iso, ObjectIdentity = mibBuilder.importSymbols("SNMPv2-SMI", "MibIdentifier", "NotificationType", "ModuleIdentity", "Gauge32", "IpAddress", "enterprises", "Bits", "Integer32", "Counter64", "TimeTicks", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "Counter32", "Unsigned32", "iso", "ObjectIdentity")
TextualConvention, DisplayString = mibBuilder.importSymbols("SNMPv2-TC", "TextualConvention", "DisplayString")
rsRoot = ModuleIdentity((1, 3, 6, 1, 4, 1, 2566))
if mibBuilder.loadTexts: rsRoot.setRevisions(('2010-08-09 08:03',))
if mibBuilder.loadTexts: rsRoot.setLastUpdated('201008090803Z')
rsCommon = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 113))
if mibBuilder.loadTexts: rsCommon.setStatus('current')
rsProducts = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127))
if mibBuilder.loadTexts: rsProducts.setStatus('current')
rsProdBroadcast = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1))
if mibBuilder.loadTexts: rsProdBroadcast.setStatus('current')
rsProdBroadcastMeasurement = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1, 1))
if mibBuilder.loadTexts: rsProdBroadcastMeasurement.setStatus('current')
rsProdBroadcastTransmitter = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1, 2))
if mibBuilder.loadTexts: rsProdBroadcastTransmitter.setStatus('current')
rsProdBroadcastHeadend = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1, 3))
if mibBuilder.loadTexts: rsProdBroadcastHeadend.setStatus('current')
rsProdRadioCommunications = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2))
if mibBuilder.loadTexts: rsProdRadioCommunications.setStatus('current')
rsProdRadioCommCommon = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 1))
if mibBuilder.loadTexts: rsProdRadioCommCommon.setStatus('current')
rsProdRadioCommSeries4200 = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 2))
if mibBuilder.loadTexts: rsProdRadioCommSeries4200.setStatus('current')
rsProdRadioCommSystems = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 3))
if mibBuilder.loadTexts: rsProdRadioCommSystems.setStatus('current')
rsProdRadioCommEquipment = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 4))
if mibBuilder.loadTexts: rsProdRadioCommEquipment.setStatus('current')
rsRequirements = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 131))
if mibBuilder.loadTexts: rsRequirements.setStatus('current')
rsExperimental = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 137))
if mibBuilder.loadTexts: rsExperimental.setStatus('current')
rsCapabilities = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 139))
if mibBuilder.loadTexts: rsCapabilities.setStatus('current')
rsRegistration = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149))
if mibBuilder.loadTexts: rsRegistration.setStatus('current')
rsRegModules = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 1))
if mibBuilder.loadTexts: rsRegModules.setStatus('current')
rsRegBroadcast = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 2))
if mibBuilder.loadTexts: rsRegBroadcast.setStatus('current')
rsRegBroadcastMeasurement = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 2, 1))
if mibBuilder.loadTexts: rsRegBroadcastMeasurement.setStatus('current')
rsRegBroadcastTransmitter = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 2, 2))
if mibBuilder.loadTexts: rsRegBroadcastTransmitter.setStatus('current')
rsCrypto = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 151))
if mibBuilder.loadTexts: rsCrypto.setStatus('current')
mibBuilder.exportSymbols("RS-COMMON-MIB", rsRegBroadcast=rsRegBroadcast, rsProdBroadcastHeadend=rsProdBroadcastHeadend, rsProdRadioCommunications=rsProdRadioCommunications, rsProdBroadcastMeasurement=rsProdBroadcastMeasurement, rsRegModules=rsRegModules, rsProducts=rsProducts, rsProdRadioCommEquipment=rsProdRadioCommEquipment, rsRegistration=rsRegistration, rsRequirements=rsRequirements, PYSNMP_MODULE_ID=rsRoot, rsExperimental=rsExperimental, rsProdBroadcastTransmitter=rsProdBroadcastTransmitter, rsProdRadioCommSeries4200=rsProdRadioCommSeries4200, rsProdRadioCommSystems=rsProdRadioCommSystems, rsRegBroadcastTransmitter=rsRegBroadcastTransmitter, rsCommon=rsCommon, rsRoot=rsRoot, rsRegBroadcastMeasurement=rsRegBroadcastMeasurement, rsProdBroadcast=rsProdBroadcast, rsCrypto=rsCrypto, rsProdRadioCommCommon=rsProdRadioCommCommon, rsCapabilities=rsCapabilities)

RS-COMMON-MIB.mib

-- **********************************************************************
-- **********************************************************************
-- **
-- **  COPYRIGHT      (c) 2006 Rohde & Schwarz GmbH & Co. KG
-- **                          Muehldorfstrasse 15
-- **    R & S                 81671 Muenchen
-- **
-- ** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- **
-- **  MODULE         RS-COMMON-MIB.my
-- **  
-- **  DESCRIPTION    Rohde & Schwarz common SNMP mib
-- **
-- **  HISTORY        2010-08-09 Christian Hoelzl
-- **                 rsProdRadioCommEquipment added
-- **
-- **                 05/27/2008 Christian Hoelzl
-- **                 rsProdBroadcastHeadend added
-- **
-- **                 05/07/2008 Christian Hoelzl
-- **                 rsProdRadioCommSystems added
-- **
-- **                 10/31/2007 Christian Hoelzl
-- **                 rsProdRadioCommunications added
-- **                 rsProdRadioCommCommon added
-- **                 rsProdRadioCommSeries4200 added
-- **
-- **                 09/05/2006 Christian Hoelzl
-- **                 rsCrypto added
-- **
-- **                 06/24/2005 Christian Hoelzl
-- **                 first version
-- **
-- ** +-iso(1)
-- **   +-org(3)
-- **     +-dod(6)
-- **       +-internet(1)
-- **         +-private(4)
-- **           +-enterprises(1)
-- **             +-rsRoot(2566)
-- **               +-rsCommon(123)
-- **               +-rsProduct(127)
-- **               | +-rsProdBroadcast(1)
-- **               | | +-rsProdBroadcastMeasurement(1)
-- **               | | +-rsProdBroadcastTransmitter(2)
-- **               | | +-rsProdBroadcastHeadend(3)
-- **               | |
-- **               | +-rsProdRadioCommunications(2)
-- **               |   +-rsProdRadioCommCommon(1)
-- **               |   +-rsProdRadioCommSeries4200(2)
-- **               |   +-rsProdRadioCommSystems(3)
-- **               |   +-rsPrdoRadioCommEquipment(4)
-- **               |
-- **               +-rsRequirements(131)
-- **               +-rsExperimental(137)
-- **               +-rsCapabilities(139)
-- **               +-rsRegistration(149)
-- **               | +-rsRegModules(1)
-- **               | +-rsRegBroadcast(2)
-- **               |   +-rsRegBroadcastMeasurement(1)
-- **               |   +-rsRegBroadcastTransmitter(2)
-- **               |
-- **               +-rsCrypto(151)
-- ** 
-- **
-- **********************************************************************
-- **********************************************************************

  RS-COMMON-MIB DEFINITIONS ::= BEGIN

    IMPORTS enterprises, OBJECT-IDENTITY, MODULE-IDENTITY FROM SNMPv2-SMI;

    rsRoot MODULE-IDENTITY
        LAST-UPDATED "201008090803Z" -- August 9th 2010 at 08:03 GMT
        ORGANIZATION 
                "Rohde&Schwarz GmbH & Co.KG"
        CONTACT-INFO 
                "Rohde & Schwarz GmbH & Co. KG
                 Muehldorfstrasse 15
                 81671 Munich
                 Germany"
          DESCRIPTION 
            "The root OID of Rohde&Schwarz GmbH & Co.KG"
        REVISION "201008090803Z" -- August 9th 2010 at 08:03 GMT
          DESCRIPTION 
            "MODULE-IDENTITY added to RS-COMMON-MIB"
        ::= { enterprises 2566 }

    rsCommon OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for common object and event definitions"
        ::= { rsRoot 113 }

    rsProducts OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for products."
        ::= { rsRoot 127 }

    rsProdBroadcast OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast products."
        ::= { rsProducts 1 }

    rsProdBroadcastMeasurement OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast measurement products."
        ::= { rsProdBroadcast 1 }

    rsProdBroadcastTransmitter OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast transmitter products."
        ::= { rsProdBroadcast 2 }

    rsProdBroadcastHeadend OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for broadcast headend products."
        ::= { rsProdBroadcast 3 }

    rsProdRadioCommunications OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication products."
        ::= { rsProducts 2 }

    rsProdRadioCommCommon OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication product common features."
        ::= { rsProdRadioCommunications 1 }

    rsProdRadioCommSeries4200 OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication series 4200."
        ::= { rsProdRadioCommunications 2 }

    rsProdRadioCommSystems OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication systems."
        ::= { rsProdRadioCommunications 3 }

    rsProdRadioCommEquipment OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for radio communication equipment."
        ::= { rsProdRadioCommunications 4 }

    rsRequirements OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for management application requirements"
        ::= { rsRoot 131 }

    rsExperimental OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for experimental definitions"
        ::= { rsRoot 137 }

    rsCapabilities OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for agent capabilities"
        ::= { rsRoot 139 }

    rsRegistration OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for registrations"
        ::= { rsRoot 149 }

    rsRegModules OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for modules registrations"
        ::= { rsRegistration 1 }

    rsRegBroadcast OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Description."
        ::= { rsRegistration 2 }

    rsRegBroadcastMeasurement OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Description."
        ::= { rsRegBroadcast 1 }

    rsRegBroadcastTransmitter OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Description."
        ::= { rsRegBroadcast 2 }

    rsCrypto OBJECT-IDENTITY
        STATUS current
        DESCRIPTION 
            "Sub-tree for crypto algorithms"
        ::= { rsRoot 151 }

    END

--
-- RS-COMMON-MIB.my
--
etingof commented 7 years ago

The texts should be there... Can you remove everything from ~/.pysnmp/mibs/* then add the genText option to your script:

compiler.addMibCompiler(mibBuilder, sources=['/users/admin/desktop/mib/mibfiles/', 
                                         'http://mibs.snmplabs.com/asn1/'], genTexts=True)

Re-run the script and check the MIB files afterwards?

That's to make sure those are not stale files generated before you added the genTexts flag.

BusbyActual commented 7 years ago

I ran rm -rf * in the ~/.psnmp/mibs directory and confirmed nothing was there. After I re-ran the scripts the directory had pretty much the same output.

Script

from pysnmp.smi import builder, view, compiler, error, instrum, exval

from pysmi import debug
debug.setLogger(debug.Debug('searcher', 'reader', 'compiler'))

# Create MIB loader/builder
mibBuilder = builder.MibBuilder()

# Optionally attach PySMI MIB compiler (if installed)
print('Attaching MIB compiler...'),
compiler.addMibCompiler(mibBuilder, sources=['/users/admin/desktop/mib/mibFiles/', 'http://mibs.snmplabs.com/asn1/'], genTexts=True)
print('done')

# Optionally set an alternative path to compiled MIBs
print('Setting MIB sources...')
mibBuilder.addMibSources(builder.DirMibSource('/users/admin/desktop/mib/mibfiles/'))
print(mibBuilder.getMibSources())
print('done')

print('Loading MIB modules...'),
mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-FRAMEWORK-MIB', 'SNMP-COMMUNITY-MIB', 'RS-COMMON-MIB', 'RS-XX9-SMI-MIB' , 'RS-XX9-TC-MIB', 'RS-XX9-COMMON-MIB')

# RS-XX9-ATSC-MIB', 'RS-XX9-ATV-MIB', 'RS-XX9-AIR-COOLING-MIB');
# mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-FRAMEWORK-MIB', 'SNMP-COMMUNITY-MIB', 'RS-COMMON-MIB', 'RS-XX9-AIR-COOLING-MIB', 'RS-XX9-ATSC-MIB', 'RS-XX9-ATV-MIB', 'RS-XX9-COMMON-MIB', 'RS-XX9-DAB-MIB', 'RS-XX9-DTMB-MIB', 'RS-XX9-DVBT-MIB', 'RS-XX9-DVBT2-MIB', 'RS-XX9-FM-MIB', 'RS-XX9-ISDBT-MIB', 'RS-XX9-LIQUID-COOLING-MIB', 'RS-XX9-MTX-MIB', 'RS-XX9-SMI-MIB', 'RS-XX9-TC-MIB', 'RS-XX9-TX-MIB');
 # RS-COMMON-MIB         - mandatory for this MIB
 #                - RS-XX9-SMI-MIB        - mandatory for this MIB
 #                - RS-XX9-TC-MIB         - mandatory for this MIB
 #                - RS-XX9-COMMON-MIB
# print('done')

print('Indexing MIB objects...'),
mibView = view.MibViewController(mibBuilder)
print('done')

# print('MIB symbol name lookup by OID: '),
# oid, label, suffix = mibView.getNodeName((1, 3, 6, 1, 4, 1))
# print(oid, label, suffix)

# print('MIB symbol name lookup by label: '),
# oid, label, suffix = mibView.getNodeName((1, 3, 6, 1, 4, 1, 'mib-2', 1, 'sysDescr'))
# print(oid, label, suffix)

print('MIB symbol name lookup by symbol description: '),
oid, label, suffix = mibView.getNodeName(('sysDescr',))
oid, label, suffix = mibView.getNodeName(('snmpEngineID',), 'SNMP-FRAMEWORK-MIB')
print(oid, label, suffix)

print('MIB 1: '),
mibName, objName = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID'
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

mibName, objName, restOfOid = mibView.getNodeLocation(oid)
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

print('MIB 2: '),
mibName, objName = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID'
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

mibName, objName, restOfOid = mibView.getNodeLocation(oid)
mibObj, = mibBuilder.importSymbols(mibName, objName)
print(mibObj.getDescription())

print('MIB object value pretty print: '),
mibNode, = mibBuilder.importSymbols('SNMP-FRAMEWORK-MIB', 'snmpEngineID')
print(mibNode.syntax.prettyPrint())

print('MIB symbol location lookup by name: '),
modName, symName, suffix = mibView.getNodeLocation(('snmpCommunityEntry',))
print(symName, modName)

print('MIB node lookup by location: '),
rowNode, = mibBuilder.importSymbols(modName, symName)
print(rowNode)

print('Conceptual table index value to oid convertion: '),
oid = rowNode.getInstIdFromIndices('router')
print(oid)

print('Conceptual table index oid to value convertion: '),
print(rowNode.getIndicesFromInstId(oid))

print('MIB tree traversal')
oid, label, suffix = mibView.getFirstNodeName()
while 1:
    try:
        mibName, objName, mibName2 = 'SNMP-FRAMEWORK-MIB', 'snmpEngineID', 'RS-COMMON-MIB'
        mibObj, = mibBuilder.importSymbols(mibName, objName)
        # mibObj2, = mibBuilder.importSymbols(mibName2);
        # print(mibBuilder['RS-COMMON-MIB'])

        modName, nodeDesc, suffix = mibView.getNodeLocation(oid)
        # mibObj, = mibBuilder.importSymbols(modName, nodeDesc)
        print(mibObj.getDescription())

        print('%s::%s == %s && %s' % (modName, nodeDesc, oid, mibObj))
        oid, label, suffix = mibView.getNextNodeName(oid)

    except error.NoSuchObjectError:
        break

print('Building MIB tree...'),
mibInstrum = instrum.MibInstrumController(mibBuilder)
print('done')

print('Building table entry index from human-friendly representation...'),
snmpCommunityEntry, = mibBuilder.importSymbols(
    'SNMP-COMMUNITY-MIB', 'snmpCommunityEntry'
)
instanceId = snmpCommunityEntry.getInstIdFromIndices('my-router')
print('done')

# print('Create/update SNMP-COMMUNITY-MIB::snmpCommunityEntry table row: ')
# varBinds = mibInstrum.writeVars(
#     ((snmpCommunityEntry.name + (2,) + instanceId, 'mycomm'),
#      (snmpCommunityEntry.name + (3,) + instanceId, 'mynmsname'),
#      (snmpCommunityEntry.name + (7,) + instanceId, 'volatile'))
# )
# for oid, val in varBinds:
#     print('%s = %s' % ('.'.join([str(x) for x in oid]), val.prettyPrint()))
# print('done')

print('Read whole MIB (table walk)')
oid, val = (), None
while 1:
    oid, val = mibInstrum.readNextVars(((oid, val),))[0]
    if exval.endOfMib.isSameTypeWith(val):
        break
    print('%s = %s' % ('.'.join([str(x) for x in oid]), val.prettyPrint()))
print('done')

print('Unloading MIB modules...'),
mibBuilder.unloadModules()
print('done')

# print('Modules traversal')
# modName = mibView.getFirstModuleName()
# while 1:
#     if modName: print(modName)
#     try:
#         modName = mibView.getNextModuleName(modName)
#     except error.SmiError:
#         break

RS-COMMON-MIB.py

#
# PySNMP MIB module RS-COMMON-MIB (http://pysnmp.sf.net)
# ASN.1 source file:///users/admin/desktop/mib/mibFiles/RS-COMMON-MIB.mib
# Produced by pysmi-0.1.3 at Tue Aug  1 14:05:37 2017
# On host Busby.local platform Darwin version 15.6.0 by user admin
# Using Python version 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) 
#
ObjectIdentifier, OctetString, Integer = mibBuilder.importSymbols("ASN1", "ObjectIdentifier", "OctetString", "Integer")
NamedValues, = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues")
ValueRangeConstraint, ConstraintsIntersection, SingleValueConstraint, ValueSizeConstraint, ConstraintsUnion = mibBuilder.importSymbols("ASN1-REFINEMENT", "ValueRangeConstraint", "ConstraintsIntersection", "SingleValueConstraint", "ValueSizeConstraint", "ConstraintsUnion")
ModuleCompliance, NotificationGroup = mibBuilder.importSymbols("SNMPv2-CONF", "ModuleCompliance", "NotificationGroup")
Unsigned32, TimeTicks, Bits, ObjectIdentity, Counter64, ModuleIdentity, iso, Counter32, IpAddress, MibIdentifier, NotificationType, Gauge32, Integer32, enterprises, MibScalar, MibTable, MibTableRow, MibTableColumn = mibBuilder.importSymbols("SNMPv2-SMI", "Unsigned32", "TimeTicks", "Bits", "ObjectIdentity", "Counter64", "ModuleIdentity", "iso", "Counter32", "IpAddress", "MibIdentifier", "NotificationType", "Gauge32", "Integer32", "enterprises", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn")
DisplayString, TextualConvention = mibBuilder.importSymbols("SNMPv2-TC", "DisplayString", "TextualConvention")
rsRoot = ModuleIdentity((1, 3, 6, 1, 4, 1, 2566))
if mibBuilder.loadTexts: rsRoot.setRevisions(('2010-08-09 08:03',))
if mibBuilder.loadTexts: rsRoot.setLastUpdated('201008090803Z')
rsCommon = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 113))
if mibBuilder.loadTexts: rsCommon.setStatus('current')
rsProducts = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127))
if mibBuilder.loadTexts: rsProducts.setStatus('current')
rsProdBroadcast = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1))
if mibBuilder.loadTexts: rsProdBroadcast.setStatus('current')
rsProdBroadcastMeasurement = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1, 1))
if mibBuilder.loadTexts: rsProdBroadcastMeasurement.setStatus('current')
rsProdBroadcastTransmitter = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1, 2))
if mibBuilder.loadTexts: rsProdBroadcastTransmitter.setStatus('current')
rsProdBroadcastHeadend = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 1, 3))
if mibBuilder.loadTexts: rsProdBroadcastHeadend.setStatus('current')
rsProdRadioCommunications = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2))
if mibBuilder.loadTexts: rsProdRadioCommunications.setStatus('current')
rsProdRadioCommCommon = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 1))
if mibBuilder.loadTexts: rsProdRadioCommCommon.setStatus('current')
rsProdRadioCommSeries4200 = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 2))
if mibBuilder.loadTexts: rsProdRadioCommSeries4200.setStatus('current')
rsProdRadioCommSystems = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 3))
if mibBuilder.loadTexts: rsProdRadioCommSystems.setStatus('current')
rsProdRadioCommEquipment = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 127, 2, 4))
if mibBuilder.loadTexts: rsProdRadioCommEquipment.setStatus('current')
rsRequirements = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 131))
if mibBuilder.loadTexts: rsRequirements.setStatus('current')
rsExperimental = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 137))
if mibBuilder.loadTexts: rsExperimental.setStatus('current')
rsCapabilities = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 139))
if mibBuilder.loadTexts: rsCapabilities.setStatus('current')
rsRegistration = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149))
if mibBuilder.loadTexts: rsRegistration.setStatus('current')
rsRegModules = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 1))
if mibBuilder.loadTexts: rsRegModules.setStatus('current')
rsRegBroadcast = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 2))
if mibBuilder.loadTexts: rsRegBroadcast.setStatus('current')
rsRegBroadcastMeasurement = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 2, 1))
if mibBuilder.loadTexts: rsRegBroadcastMeasurement.setStatus('current')
rsRegBroadcastTransmitter = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 149, 2, 2))
if mibBuilder.loadTexts: rsRegBroadcastTransmitter.setStatus('current')
rsCrypto = ObjectIdentity((1, 3, 6, 1, 4, 1, 2566, 151))
if mibBuilder.loadTexts: rsCrypto.setStatus('current')
mibBuilder.exportSymbols("RS-COMMON-MIB", rsProdRadioCommSeries4200=rsProdRadioCommSeries4200, rsCommon=rsCommon, rsRegistration=rsRegistration, rsProdBroadcastMeasurement=rsProdBroadcastMeasurement, rsRegBroadcast=rsRegBroadcast, rsCrypto=rsCrypto, rsRegBroadcastMeasurement=rsRegBroadcastMeasurement, rsProdBroadcast=rsProdBroadcast, rsRoot=rsRoot, rsProdRadioCommSystems=rsProdRadioCommSystems, rsProdRadioCommCommon=rsProdRadioCommCommon, rsProdBroadcastHeadend=rsProdBroadcastHeadend, rsExperimental=rsExperimental, rsRegModules=rsRegModules, rsProdRadioCommunications=rsProdRadioCommunications, rsProdRadioCommEquipment=rsProdRadioCommEquipment, rsProdBroadcastTransmitter=rsProdBroadcastTransmitter, PYSNMP_MODULE_ID=rsRoot, rsRegBroadcastTransmitter=rsRegBroadcastTransmitter, rsCapabilities=rsCapabilities, rsProducts=rsProducts, rsRequirements=rsRequirements)
thom-nic commented 3 years ago

I believe I'm seeing the same behavior as @BusbyActual - deleted ~/.pysnmp folder, called addMibCompiler(... genTexts=True)) but when I look at the converted .py file, no description text to be found...

Edit: this appears to work:

    mibBuilder = builder.MibBuilder()
    mibBuilder.loadTexts = True
rodrigo-aznar commented 3 years ago

Hi all,

I've been studying these issues, the old discussions on sourceforge, and the faqs (.rsts) for some weeks, but now I ask your help.

I believe I am facing same issue here as @BusbyActual and @thom-nic. I have a new custom .MIB which I added in the directory seen by script (very similar to the posted here). And I have:

modName and modName + ".py[co]", ', '.join([str(x) for x in self.__mibSources]))

pysnmp.smi.error.MibNotFoundError: MIB file "1206v0122.py[co]" not found in search path

One thing that I dont understand is that I cannot found the ~./pysnmp folder on my machine. Dumb question: Is this folder expected to be created right after I did "pip install pysnmp"? Or should it be created after run the script itself?

python: 3.6.9 pysnmp: /usr/local/lib/python3.6/dist-packages/pysnmp-4.4.12.dist-info pysmi (0.3.4)

Many thanks