您的位置:首页 > 编程语言 > Python开发

Python使用pysnmp发送snmp v2c 告警

2014-11-05 18:12 1231 查看
# 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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: