我使扭曲的应用程序使用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