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をクローズする方法はありますか?
を、この場合には私が得た:
あなたはまだゼロからの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