我使扭曲的應用程序使用pysnmp發送snmp陷阱。執行sendNotification後,一段時間的應用程序停止工作後,UDP連接未關閉。正確關閉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嗎?
我明白了,但在這種情況下,我得到了pysnmp.smi.error.MibLoadError:MIB文件/opt/sendtrap/lib/python2.7/site-packages/pysnmp/smi/mibs/SNMPv2-MIB.pyc訪問錯誤:[Errno 24]打開的文件過多:以及之後2017-03-16 10:29:39 + 0100重新啓動應用程序[UdpTwistedTransport(UDP)]停止協議 2017-03-16 10:29 :39 + 0100 [UdpTwistedTransport(UDP)](UDP端口27714關閉) –
alex