Python-SNMP与PYSNMP F5-ltm

2024-06-30 16:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新手

当我运行以下命令时:

snmpwalk -v2c -c public localhost .1.3.6.1.4.1.3375.2.2.5.6.2.1.6

在我的F5 LTM中,我得到的所有节点、池和状态如下:

^{pr2}$

但是,当我使用pysnmp的相同OID时,我得到的结果是:

[ObjectType(ObjectIdentity(<ObjectName value object at 0x6373150 tagSet <TagSet object at 0x4ab5190 tags 0:0:6> payload [1.3.6.1.4.1.3375...80.49.48.52.9144]>), <Integer value object at 0x6373050 subtypeSpec <ConstraintsIntersection object at 0x4ab5c90 consts <ValueRangeConstraint object at 0x4a17c90 consts -2147483648, 2147483647>> tagSet <TagSet object at 0x4aabad0 tags 0:0:2> payload [1]>)]

我的问题:

有没有方法来解析这个pysnmp响应,或者我做错了什么?在

下面是python代码:

from pysnmp.hlapi import *


def walk(host, oid):
    for (errorIndication, errorStatus, errorIndex, varBinds) in nextCmd(SnmpEngine(),
                                                                        CommunityData('public'),
                                                                        UdpTransportTarget((host, 161)),
                                                                        ContextData(),
                                                                        ObjectType(ObjectIdentity(oid)),
                                                                        lexicographicMode=False):
        if errorIndication:
            break
        elif errorStatus:
            break

        else:

            for varBind in varBinds:
                print(varBind)


walk('10.10.100.89', '1.3.6.1.4.1.3375.2.2.5.6.2.1.6')

Tags: hostobjectvaluetagspublicatwalkpayload
1条回答
网友
1楼 · 发布于 2024-06-30 16:18:39

您只需要.prettyPrint()响应时得到的pysnmp对象:

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

如图所示in the examples。在

编辑:

如果要针对MIB解析响应变量绑定,则需要将该MIB(可能是^{cd2>})转换为pysnmp,如下所示:

^{pr2}$

或者,如果在请求中指定MIB符号(与指定oid相反),pysnmp将自动加载指定的MIB。在

...
ContextData(),
ObjectType(ObjectIdentity('F5-BIGIP-LOCAL-MIB', 'ltmPoolMbrStatusEnabledState')),
...

相关问题 更多 >