我正在使用python中的SNMP模拟器,我正在尝试关注snmplabs.com中的一些示例。我无法运行snmplabs.com中的一个示例脚本,该脚本在demo.snmplabs.com上的公共SNMP命令响应程序中为sysDescr.0对象执行SNMP GET操作。
我已经通过pip下载了所有必需的软件包。
以下是http://snmplabs.com/pysnmp/quick-start.html提供的代码(抱歉,如果格式错误,这里相当新):
from pysnmp.hlapi import *
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('public', mpModel=0),
UdpTransportTarget(('demo.snmplabs.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的人可以解释一些我可能缺少的基本原理吗?
答案 0 :(得分:0)
你的脚本适合我。我怀疑您可能有本地防火墙丢弃请求或响应SNMP数据包(UDP / 161)。尝试在不同的网络上运行脚本。
顺便说一句,在snmplabs.com上也有SNMP simulator tool。