2017-08-08 13 views
1

をGET、私はlocalhostまたは127.0.0.1でそれを実行すると、SNMPの次のコードは、pysnmpタイムアウト

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

next(g) 

を使ってPythonでGETコマンドをテストし、それは動作しますが、私はコンピュータのIPを使用する場合タイムアウトエラーが発生します。

私はJava(snmp4j)で見つかった例もテストしましたが、それは同じです:localhost127.0.0.1では動作しますが、IPでは動作しません。私がIPにpingを行うと動作します。なぜこのようなことが起こるのか分かりません。

私はWindows 10を使用しており、this tutorialの後にSNMPエージェントを設定しています。

IPを使用するとタイムアウトを回避する方法はありますか?

答えて

2

まず最初に、リモートSNMPエージェントがあなたに応答するように設定されていることを確認してください。リモートエージェントが使用するように設定されているのと同じSNMPコミュニティ名とSNMPバージョンを使用していますか?

これはネットワーク接続の問題でもあります。私の頭の上には、入ってくるSNMPパケット(例えば応答)をドロップするファイアウォールルールや、レスポンスが別のローカルインターフェイスに送られたときにSNMPパケットを発信する非対称ルーティングがあります。

第2の仮説をテストするには、公開SNMPエージェントにdemo.snmplabs.comを照会してみてください。それがあなたに応答しないなら、それはあなたが応答パケットを得ていないという兆候です。

もう1つの方法は、ローカルマシンにWiresharkを設定し、SNMPトラフィック(UDP、ポート161)が返ってくるかどうかを確認することです。