我如何在python中使用SNMP walk输出变量名而不是数字OID?

fdx2calv  于 2023-03-11  发布在  Python
关注(0)|答案(1)|浏览(124)

我正在为SNMP walk编写一个python脚本,并希望打印出变量名沿着关联值。我目前使用的代码提供了数字OID及其值。我有MIB文件-有办法输出变量名吗?
这是我正在使用的代码:

def walk_mib(ipaddress, oid):
    for (errorIndication, errorStatus, errorIndex, varBinds) in nextCmd(SnmpEngine(),
           CommunityData('public'),
           UdpTransportTarget((ipaddress, 161)),
           ContextData(),
           ObjectType(ObjectIdentity(oid)),
           ):

        if not errorIndication and not errorStatus:
            for varBind in varBinds:
                result=' = '.join([x.prettyPrint() for x in varBind])
                print(result)

walk_mib('<ip address>', start_oid)

它给出如下输出:SNMPV 2-SMI::[OID] = [value]我想要的是类似于以下内容的内容:SNMPV 2-SMI::[变量名称] = [值]

pexxcrt2

pexxcrt21#

人们确实需要知道你现在走过的是哪个OID,这样才能更好地回答这个问题。
如果OID在私有企业下(例如Cisco相关企业),则需要显式加载MIB文档,

snmpEngine = SnmpEngine()
mibBuilder = snmpEngine.getMibBuilder()

# Optionally compile MIBs
compiler.addMibCompiler(mibBuilder, sources=['/usr/share/snmp/mibs'])
    mibBuilder.addMibSources(builder.DirMibSource('/Users/someone/somefolder/mibs'))

mibBuilder.loadModule('CISCO-PRODUCTS-MIB')

然后可以将这样的snmpEngine对象传递给nextCmd

相关问题