You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python编写程序,在收到指定SNMP OID的Trap时触发告警?

Python SNMP Trap 告警监听程序实现

前置依赖

仅需要安装第三方SNMP处理库pysnmp,GUI弹窗使用Python自带的tkinter库无需额外安装:

pip install pysnmp

完整可运行代码

from pysnmp.entity import engine, config
from pysnmp.carrier.asyncore.dgram import udp
from pysnmp.entity.rfc3413 import ntfrcv
import tkinter as tk
from tkinter import messagebox

# 隐藏tkinter主窗口,仅使用弹窗功能
root = tk.Tk()
root.withdraw()

# 自定义目标OID列表
TARGET_OIDS = [
    '1.3.6.1.4.1.31448.1.1.0.9',
    '1.3.6.1.4.1.31448.1.1.0.13',
    '1.3.6.1.4.1.31448.1.1.0.14',
    '1.3.6.1.4.1.31448.1.1.0.15',
    '1.3.6.1.4.1.31448.1.1.0.19',
    '1.3.6.1.4.1.31448.1.1.0.23'
]

# Trap接收回调函数
def trap_receive_callback(snmpEngine, stateReference, contextEngineId, contextName, varBinds, cbCtx):
    for oid, value in varBinds:
        oid_str = oid.prettyPrint()
        if oid_str in TARGET_OIDS:
            messagebox.showwarning(
                title="设备故障告警",
                message=f"收到对应故障SNMP Trap\n触发OID:{oid_str}\n请立即检查关联设备运行状态"
            )
            # 匹配到目标OID后直接终止遍历,避免重复弹窗
            break

# 初始化SNMP引擎
snmp_engine = engine.SnmpEngine()

# 配置UDP监听:0.0.0.0表示监听所有网卡,端口162为SNMP Trap默认端口
config.addTransport(
    snmp_engine,
    udp.domainName,
    udp.UdpTransport().openServerMode(('0.0.0.0', 162))
)

# 配置SNMP v2c团体名,可根据设备实际配置修改团体名参数
config.addV1System(snmp_engine, 'my-access-area', 'public')

# 注册Trap接收回调
ntfrcv.NotificationReceiver(snmp_engine, trap_receive_callback)

snmp_engine.transportDispatcher.jobStarted(1)

if __name__ == "__main__":
    try:
        print("SNMP Trap监听服务已启动,等待告警触发...")
        snmp_engine.transportDispatcher.runDispatcher()
    except KeyboardInterrupt:
        print("服务已停止")
        snmp_engine.transportDispatcher.closeDispatcher()

注意事项

  • 端口162属于系统保留端口,Linux/Mac运行需要加sudo,Windows需要以管理员身份启动终端运行程序;如果不想使用管理员权限,可以将监听端口改为1024以上的高位端口(如1162),同步修改关联设备的Trap发送端口即可
  • 代码默认使用SNMP v2c版本、团体名public,如果你的设备使用其他SNMP版本或自定义团体名,修改对应配置即可
  • 弹窗为阻塞式提示,点击确认后程序会继续监听后续Trap,不需要弹窗的话可以替换为系统桌面通知逻辑

内容的提问来源于stack exchange,提问作者Antonio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 02:06:07