PySNMP 获取变量超时

问题描述 投票:0回答:1

我正在用 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 的人可以解释我可能缺少的一些基础知识吗?

python network-programming snmp pysnmp
1个回答
0
投票

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

顺便说一句,还有 SNMP 模拟器工具可用,https://docs.lextudio.com/snmp/snmp-simulation-service#

© www.soinside.com 2019 - 2024. All rights reserved.