SNMP GET超时

时间:2017-08-08 04:23:15

标签: snmp pysnmp snmp4j

我使用pysnmp

使用Python测试了以下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时有没有办法避免超时?

1 个答案:

答案 0 :(得分:4)

首先 - 您确定您的远程SNMP代理配置为响应您吗?您是否使用与远程代理配置使用相同的SNMP社区名称和SNMP版本?

这也可能是网络连接问题。在我的头脑中,这可能是一个防火墙规则,它会丢弃传入的SNMP数据包(例如响应)或非对称路由,这意味着您从一个本地接口发出SNMP数据包,而响应来自另一个本地接口。

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

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