我使用pysnmp
使用Python测试了以下SNMP GET命令代码g = getCmd( SnmpEngine(),
CommunityData( 'escom' ),
UdpTransportTarget( ( 'localhost', 161 ) ),
ContextData(),
ObjectType( ObjectIdentity( 'SNMPv2-MIB', 'sysDescr', 0 ) ) )
next( g )
当我使用localhost
或127.0.0.1
运行时,它可以正常工作,但是当我使用计算机的IP时,我会收到超时错误。
我还测试了我在Java(snmp4j)中找到的一个例子,它是相同的:它适用于localhost
和127.0.0.1
,但不适用于IP。如果我对IP进行ping操作,它就可以工作,所以我不明白为什么会这样。
我使用的是Windows 10,并在this tutorial之后配置了SNMP代理。
使用IP时有没有办法避免超时?
答案 0 :(得分:4)
首先 - 您确定您的远程SNMP代理配置为响应您吗?您是否使用与远程代理配置使用相同的SNMP社区名称和SNMP版本?
这也可能是网络连接问题。在我的头脑中,这可能是一个防火墙规则,它会丢弃传入的SNMP数据包(例如响应)或非对称路由,这意味着您从一个本地接口发出SNMP数据包,而响应来自另一个本地接口。
要测试第二个假设,您可以尝试在demo.snmplabs.com查询公共SNMP代理。如果它没有响应您,则表明您没有收到响应数据包。
您可以采取的另一个方向是在本地计算机上设置Wireshark,并查看SNMP流量(UDP,端口161)是否回复给您。