2017-05-11 95 views
0

我對pysnmp比較陌生。我目前的要求是支持snmp陷阱的陷阱源。我想了解如何使用pysnmp ntforg.NotificationOriginator構造來支持此功能。使用pysnmp的snmp-server trap-source

發送了陷阱我當前的代碼片斷如下:關於如何在這裏陷阱源支持將是非常有益

varBinds = rfc1902.ObjectIdentity('SNMPv2-MIB', 'coldStart') 
    trapVarBinds = trapAgent.VarBinds(varBinds,'','') 
    trapPdu = rfc1902.NotificationType(
       varBinds 
      ).resolveWithMib(self.mibViewController)   
    SendTrap(trapAgent.TrapData(trapPdu,trapVarBinds)) 

def SendTrap(self,trapData): 
    for server in trapServer: #list of trapServer config info 
     data = trapServer[server] 
     print 'Trap server:%s'%(data,) 
     sendRequestHandle = ntforg.NotificationOriginator(snmpContext).sendVarBinds(
     snmpEngine, 
     data.Name, 
     #None,'', 
     snmpContext.contextEngineId,'', 
     trapData.trapPdu 
     ) 

任何見解/意見。謝謝!

+0

能否請你澄清什麼是陷阱源?以下是[示例](http://pysnmp.sourceforge.net/examples/hlapi/asyncore/sync/agent/ntforg/common-notifications.html#snmpv2c-trap-via-notification-type)或SNMP陷阱發件人。 –

+0

陷阱源是配置陷阱發送方的源(ip/interface)的一種方式。 snmp-server trap-source: 指定SNMP陷阱應該來自的接口(以及相應的IP地址)。 – Mady

回答

0

參考Notification Originator

可以指定源IP和端口像下面

from pysnmp.entity import config 
from pysnmp.carrier.asynsock.dgram import udp 

config.addSocketTransport(
snmpEngine, 
udp.domainName, 
udp.UdpSocketTransport().openClientMode(iface=('127.0.0.1', 1024)) 
)