PySNMP获取变量超时

时间:2018-02-15 19:16:55

标签: python network-programming snmp pysnmp

我正在使用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的人可以解释一些我可能缺少的基本原理吗?

1 个答案:

答案 0 :(得分:0)

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

顺便说一句,在snmplabs.com上也有SNMP simulator tool