【问题标题】:Reading OID and display its variable or name in python using pysnmp使用 pysnmp 读取 OID 并在 python 中显示其变量或名称
【发布时间】:2020-07-26 13:39:49
【问题描述】:

我正在尝试在 python 中编写代码来运行读取 OID 变量和设备名称的函数。 我设法找出了他们的 OID,但每次我在代码中输入 OID 编号时,它都会显示我没有 OID

这是使用 pysnmp 的 Python 代码:

#########################

从 pysnmp.entity.rfc3413.oneliner 导入 cmdgen

cmd_gen = cmdgen.CommandGenerator()

error_indication,error_status,error_index,var_binds = cmd_gen.getCmd(

    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('192.168.178.213', 161)),

    '.1.3.6.1.4.1.9986.3.22.1.1.3.1.10')

对于名称,var_binds 中的 val:

    print('%s' % val.prettyPrint())

##################

这是具有其中一个 OID 的设备

【问题讨论】:

  • community.helpsystems.com/knowledge-base/intermapper/snmp/… 非常基础的标量和表格知识可以回答这个问题。
  • 如何在我的 python 代码中使用 snmpwalk 我只想打印出 OID 值 snmpwalk -v2c -c 1.3.6.1.4.1.9.9.42.1.2.10.1.1 .950
  • 要查询一个表,你应该在表 OID 或条目 OID 上行走。 1.3.6.1.4.1.9.9.42.1.2.10.1.1.950 不是一个好选择。

标签: python snmp pysnmp mib oid


【解决方案1】:

在 SNMP 中有一种遍历 OID 的简单方法,称为 SNMP WALK。它可以像这样简单地实现:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2014-10-03
    • 2016-10-30
    相关资源
    最近更新 更多