Python使用pysnmp發送snmp v2c 告警

# Notification Originator Application (TRAP)
from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher
from pysnmp.carrier.asynsock.dgram import udp
from pyasn1.codec.ber import encoder
from pysnmp.proto import api

# Protocol version to use
verID = api.protoVersion2c
pMod = api.protoModules[verID]

# Build PDU
trapPDU = pMod.TrapPDU()
pMod.apiTrapPDU.setDefaults(trapPDU)

# Traps have quite different semantics among proto versions
if verID == api.protoVersion2c:

    var = []  
    oid = (1, 3, 6, 1, 4, 1, 2014516, 1, 1, 1, 2, 0)  
    val = pMod.Integer(1)  
    var.append((oid, val))  
    pMod.apiTrapPDU.setVarBinds(trapPDU, var)  
    
    
# Build message
trapMsg = pMod.Message()
pMod.apiMessage.setDefaults(trapMsg)
pMod.apiMessage.setCommunity(trapMsg, 'public')
pMod.apiMessage.setPDU(trapMsg, trapPDU)

transportDispatcher = AsynsockDispatcher()
transportDispatcher.registerTransport(
    udp.domainName, udp.UdpSocketTransport().openClientMode()
    )
transportDispatcher.sendMessage(
    encoder.encode(trapMsg), udp.domainName, ('localhost', 162) //本機測試使用localhost,應爲對應trap server 的IP地址。
    )
transportDispatcher.runDispatcher()
transportDispatcher.closeDispatcher()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章