2017-03-17 12 views
0

pysnmpを使用してsnmpトラップを送信するためにねじれたアプリケーションを作成します。 UDP接続はsendNotificationの実行後に終了せず、しばらくしてからアプリケーションが動作を停止します。UDP接続が正しく閉じられていないpysnmp

アプリケーションの再起動後にファイルを記録すると、接続が終了していることがわかります。だから私はsendtrap()の後にこれを追加する必要があります。

ログ:

2017-03-17 09:57:30+0100 [UdpTwistedTransport (UDP)] Stopping protocol <pysnmp.carrier.twisted.dgram.udp.UdpTwistedTransport instance at 0x7fc76365fab8> 
2017-03-17 09:57:30+0100 [UdpTwistedTransport (UDP)] (UDP Port 56465 Closed) 

sendtrap()スケルトン

from pysnmp.hlapi.twisted import * 

@defer.inlineCallbacks 
def sendtrap(data): 
    connection = UdpTransportTarget((TRAP_DESTINATION, 1620)) 

    d = yield sendNotification(
     SnmpEngine(), 
     CommunityData('public'), 
     connection, 
     ContextData(), 
     'trap', 
     NotificationType(
      ObjectIdentity('1.1.1.') 
     ).addVarBinds() 
    ) 

    # connection.protoTransport.closeTransport() 

私が見つけた唯一のポイントは、接続インスタンスconnection.protoTransport.closeTransport(ある)しかし、このコールは、UDP閉鎖のためには影響しません。 。

UDPをクローズする方法はありますか?

答えて

0

ユーザデータグラムプロトコル、またはUDPは、ステートレス/コネクションレスプロトコルであり、クローズする必要はありません。あなたはそれを送って、データが目的地で終わり、忘れてくれることを願っています。

UDPの詳細については、Wikipedia articleを参照してください。

+0

を、この場合には私が得た:

あなたはまだゼロからのSNMPエンジンを再初期化したい場合は、私はあなたをお勧めする、あなたの呼び出しが行われた後、明示的にそれをシャットダウンしますpysnmp.smi.error.MibLoadError:MIBファイル/opt/sendtrap/lib/python2.7/site-packages/pysnmp/smi/mibs/SNMPv2-MIB.pycアクセスエラー:[Errno 24]開いているファイルが多すぎます:以降アプリケーションの再起動10007-03-16 10:29:39 + 0100 [0x07f9af73c7cb0のプロトコルを停止する 2017-03-16 10:29 :39 + 0100 [UdpTwistedTransport(UDP)](UDPポート27714閉鎖) – alex

0

sendtrapの呼び出しでSnmpEngineインスタンスを保存することをお勧めします。その理由は、SNMPエンジンは内部的に複雑で設定が高価なためです。ここにはan exampleがあります。私が見

from pysnmp.hlapi.twisted import * 
from pysnmp.hlapi.twisted import lcd 

def sendtrap(data): 

    snmpEngine = SnmpEngine() 

    yield sendNotification(
     snmpEngine, 
     CommunityData('public'), 
     UdpTransportTarget((TRAP_DESTINATION, 1620)), 
     ContextData(), 
     'trap', 
     NotificationType(ObjectIdentity('1.1.1.')) 
    ) 

    # this will undo all notification-specific changes to SnmpEngine 
    lcd.unconfigure(snmpEngine) 


# calling Twisted reactor 
+0

こんにちはIlya、 残念ながら、pysnmp.hlapi.twisted import lcdから廃止されました。ロジックがprotoTransportにputTransport()に渡されましたが、動作しません。 – alex

+0

@alex正確に動作していないものを詳しく説明できますか? –

関連する問題