PySNMP 获取变量超时

PySNMP Fetch variable timeout

我正在 python 中开发 SNMP 模拟器,我正在尝试遵循 snmplabs.com 中的一些示例。我遇到了麻烦 运行 来自 snmplabs.com 的示例脚本之一在演示中 public 仅可用的 SNMP 命令响应程序对 sysDescr.0 对象执行 SNMP GET 操作。snmplabs.com.

我已经通过 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

我尝试用我在网上找到的其他 public 服务器替换 public 服务器,但我一直收到相同的超时响应。我在这里缺少什么吗?或者熟悉 pysnmp 的人可以解释一些我可能缺少的基础知识吗?

你的脚本适合我。我怀疑您的本地防火墙可能会丢弃请求或响应 SNMP 数据包 (UDP/161)。在其他网络上尝试 运行 您的脚本。

顺便说一句,SNMP simulator tool 在 snmplabs.com 也可用。