首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使pysnmp使用pysnmp-mib作为友好输出?

如何使pysnmp使用pysnmp-mib作为友好输出?
EN

Stack Overflow用户
提问于 2013-11-24 07:34:15
回答 1查看 1.1K关注 0票数 0

我对pysnmp和snmp都很陌生,我正在尝试获得一个简单的脚本来从我的网络上的两个路由器(机场极限和番茄固件路由器)转储数据。

此代码(来自在线示例)工作正常,但没有友好的名称:

代码语言:javascript
复制
from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('router', 161)),
    cmdgen.MibVariable('IF-MIB', '').loadMibs(),
    lexicographicMode=True, maxRows=100,
    ignoreNonIncreasingOid=True
)

if errorIndication:
    print(errorIndication)
else:
    if errorStatus:
        print('%s at %s' % (
            errorStatus.prettyPrint(),
            errorIndex and varBindTable[-1][int(errorIndex)-1] or '?'
            )
        )
    else:
        for varBindTableRow in varBindTable:
            for name, val in varBindTableRow:
                print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))

产生这个输出:

代码语言:javascript
复制
python foo.py

1.3.6.1.2.1.2.1.0 = 8
1.3.6.1.2.1.2.2.1.1.1 = 1
1.3.6.1.2.1.2.2.1.1.2 = 2
....

我希望能产生像snmpwalk那样的输出:

代码语言:javascript
复制
snmpwalk router -c public -v2c

SNMPv2-MIB::sysDescr.0 = STRING: Linux router 2.6.22.19 #20 Tue Apr 2 13:54:22 ICT 2013 mips
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (55888889) 6 days, 11:14:48.89
....

我相信这只是一个适当地提供多指标机构的问题。我已经安装了pysnmp-mibs,但我还没有想出如何使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-24 08:42:33

只管过去

代码语言:javascript
复制
..., lookupNames=True, lookupValues=True

到nextCmd()调用(如 )。

对于不是pysnmp - MIB的对象,您可能需要将MIB编译成pysnmp格式,并使用.addMibSource()方法将pysnmp脚本指向它:

代码语言:javascript
复制
..., cmdgen.MibVariable('TCP-MIB', 'tcpConnTable').addMibSource('/tmp/mymibs'),

如所解释的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20172253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档