gpt4 book ai didi

python-3.x - 使用 PySNMP 的 snmpwalk

转载 作者:行者123 更新时间:2023-12-03 20:17:56 32 4
gpt4 key购买 nike

我想重现以下 SNMP 命令的行为:

snmpwalk -v2c -cpublic 192.168.0.10 1.3.6.1.2.1.25.2.3.1.3

这给了我这个输出:
iso.3.6.1.2.1.25.2.3.1.3.1 = STRING: "Physical memory"
iso.3.6.1.2.1.25.2.3.1.3.3 = STRING: "Virtual memory"
iso.3.6.1.2.1.25.2.3.1.3.6 = STRING: "Memory buffers"
iso.3.6.1.2.1.25.2.3.1.3.7 = STRING: "Cached memory"
iso.3.6.1.2.1.25.2.3.1.3.8 = STRING: "Shared memory"
iso.3.6.1.2.1.25.2.3.1.3.10 = STRING: "Swap space"
iso.3.6.1.2.1.25.2.3.1.3.31 = STRING: "/"
iso.3.6.1.2.1.25.2.3.1.3.37 = STRING: "/run"
iso.3.6.1.2.1.25.2.3.1.3.39 = STRING: "/dev/shm"
iso.3.6.1.2.1.25.2.3.1.3.40 = STRING: "/run/lock"
iso.3.6.1.2.1.25.2.3.1.3.41 = STRING: "/sys/fs/cgroup"
iso.3.6.1.2.1.25.2.3.1.3.59 = STRING: "/tmp"
iso.3.6.1.2.1.25.2.3.1.3.60 = STRING: "/run/cgmanager/fs"
iso.3.6.1.2.1.25.2.3.1.3.61 = STRING: "/run/user/112"
iso.3.6.1.2.1.25.2.3.1.3.63 = STRING: "/run/user/0"

所以我尝试了这段代码:
#!/usr/bin/env python3
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))):
if errorIndication:
print(errorIndication, file=sys.stderr)
break
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'),
file=sys.stderr)
break
else:
for varBind in varBinds:
print(varBind)

walk('192.168.0.10','1.3.6.1.2.1.25.2.3.1.3')

问题是它返回了很多不需要的 OID……

我尝试了不同的方法,比如使用 getCmd()功能,但我无法让它按我想要的方式工作。

我可以调用外部 snmpwalk来自我的 Python 代码的命令,但我更愿意使用 Python 模块找到解决方案。

有什么想法可以帮助我吗?

最佳答案

尝试通过 lexicographicMode nextCmd() 的关键字参数.例如:

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

这应该具有通过您提供的初始 OID 限制 SNMP 步行的效果(假设您提到的不需要的 OID 是那些超出前缀的 OID)。

关于python-3.x - 使用 PySNMP 的 snmpwalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000319/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com