2017-08-08 37 views
1

我测试了SNMP GET命令的以下代码使用Python pysnmp超时在SNMP GET

g = getCmd(SnmpEngine(), 
      CommunityData('escom'), 
      UdpTransportTarget(('localhost', 161)), 
      ContextData(), 
      ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0))) 

next(g) 

当我与localhost127.0.0.1运行它,它的工作原理,但是当我用电脑的IP,我收到一个超时错误。

我还测试了一个我用Java(snmp4j)发现的例子,它是相同的:它与localhost127.0.0.1一起使用,但与IP不同。如果我对IP进行ping,它就可以工作,所以我不明白为什么会发生这种情况。

我使用的是Windows 10并在this tutorial之后配置了SNMP代理。

当我使用IP时,有没有办法避免超时?

回答

2

首先,您是否确定您的远程SNMP代理已配置为响应您?您是否使用与您的远程代理配置为使用相同的SNMP团体名称和SNMP版本?

这也可能是网络连接问题。在我头顶,这可能是一个防火墙规则,用于丢弃传入的SNMP数据包(例如响应)或非对称路由,这意味着您从一个本地接口发起SNMP数据包,同时响应到另一个接口。

要测试第二个假设,您可以尝试在demo.snmplabs.com查询公共SNMP代理。如果它没有回应你,那表示你没有收到响应数据包。

您可以采取的另一个方向是在您的本地机器上设置Wireshark并查看SNMP通信(UDP,端口161)是否会回复给您。