我正在用 python 开发 SNMP 模拟器,我正在尝试遵循一些示例。我在运行示例脚本之一时遇到问题,该脚本在公开可用的 SNMP 命令响应程序上对 sysDescr.0 对象执行 SNMP GET 操作。
我已经通过pip下载了所有需要的包。
这是以下代码(抱歉,如果格式错误,这里相当新):
from pysnmp.hlapi import *
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('public', mpModel=0),
UdpTransportTarget(('demo.xxxx.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) -1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
您可以从他们的网站下载源代码,该文件名为 v1-get1.py。我正在我的 Macbook Pro (Sierra) 终端上使用以下命令运行此脚本:
$python v1-get1.py
我正在使用 python 版本 2.7.10 并尝试在 python 版本 3.6.3 上运行它,但出现以下错误:
No SNMP response received before timeout
我尝试将公共服务器替换为我在网上找到的其他公共服务器,但我不断收到相同的超时响应。我在这里缺少什么吗?或者熟悉 pysnmp 的人可以解释我可能缺少的一些基础知识吗?
你的剧本对我有用。我怀疑您的本地防火墙可能会丢弃请求或响应 SNMP 数据包 (UDP/161)。尝试在不同的网络上运行您的脚本。
顺便说一句,还有 SNMP 模拟器工具可用,https://docs.lextudio.com/snmp/snmp-simulation-service#。