如何让pysnmp在表的末尾停止?

编程语言 2026-07-11

我用这个简单的示例,通过SNMP从交换机获取数据:

from pysnmp.hlapi import *

for (errorIndication,
     errorStatus,
     errorIndex,
     varBinds) in nextCmd(SnmpEngine(),
                          CommunityData('public', mpModel=0),
                          UdpTransportTarget(('localhost', 161)),
                          ContextData(),
                          ObjectType(ObjectIdentity('BRIDGE-MIB', 'dot1dTpFdbPort'))):
    if errorIndication or errorStatus:
        print(errorIndication or errorStatus)
        break
    else:
        for varBind in varBinds:
            print(' = '.join([x.prettyPrint() for x in varBind]))

随后它连接到交换机,获取数据,并输出一些看起来不错的结果:

BRIDGE-MIB::dot1dTpFdbPort."f8:60:f0:c4:4f:00" = 52

但最终它会继续抓取越来越多的信息:

BRIDGE-MIB::dot1dTpFdbStatus."00:02:99:14:2b:3c" = learned
BRIDGE-MIB::dot1dTpPort.1 = 1
BRIDGE-MIB::dot1dTpPortMaxInfo.1 = 1500
BRIDGE-MIB::dot1dTpPortInFrames.1 = 2275726882
...

我只是为每张表显示一行,但它会在几分钟内吐出成千上万行内容。

如何阻止它递归进入越来越多的表?

解决方案

答案是添加 lexicographicMode=False 标志。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章