python - 使用 pysnmp 获取单个 SNMP 值

标签 python pysnmp

我正在尝试将单个 OID 的值放入变量中。但是,我只能使用 pysnmp 来遍历它。 我想获取 OID 1.3.6.1.4.1.2.3.51.2.2.7.1.0 的值,如果我使用 SNMP 工具对其进行测试,它会返回值 255。

使用此代码我没有得到任何输出:

def getsnmp(host, oid):

    for (errorIndication,
         errorStatus,
         errorIndex,
         varBinds) in nextCmd(SnmpEngine(),
                              CommunityData('public', mpModel=0),
                              UdpTransportTarget((host, 161)),
                              ContextData(),
                              ObjectType(ObjectIdentity(oid)),
                              lookupMib=False,
                              lexicographicMode=False):

        if errorIndication:
            print(errorIndication)
            break

        elif errorStatus:
            print('%s at %s' % (errorStatus.prettyPrint(),
                                errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
            break

        else:
            for varBind in varBinds:
                print(' = '.join([x.prettyPrint() for x in varBind]))

getsnmp('10.100.11.30', '1.3.6.1.4.1.2.3.51.2.2.7.1.0')

但是,如果我删除最后一个 .0,则会得到结果:

1.3.6.1.4.1.2.3.51.2.2.7.1.0 = 255

如何无需步行即可直接访问特定的 OID?

谢谢!

最佳答案

nextCmd 返回相对于给定 OID 的下一个 OID。它永远不会返回给定 OID 的值。

如果您需要查询特定的OID,您应该使用getCmd函数而不是nextCmd

关于python - 使用 pysnmp 获取单个 SNMP 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51965316/

相关文章:

python - Flask foreign_keys 仍然显示 AmbiguousForeignKeysError

python - 按层次顺序按降序百分比对元组列表进行排序

python - 值错误: A `Concatenate` layer should be called on a list of at least 2 inputs

python - 将 snmp 八位字节字符串转换为人类可读的日期格式

python - 如何使用 pysnmp 避免高 CPU 使用率

python - 将 pysnmp 数字 oid 输出转换为符号名称

javascript - 是否可以在用户离开时删除整个网页?

python - 当行具有不同顺序的相同值时删除行

python - pysnmp 命令响应程序 - 使用外部数据(不是 mib)处理获取/设置请求

python多处理接收snmp警报