通过Zabbix利用SNMP获取网络设备配置文件方法咨询
用SNMP获取网络设备配置(基于Zabbix现有环境)
前提条件
- 已通过SNMP完成Zabbix与路由器/防火墙等设备的连通,可监控基础资源
- 设备支持SNMP读写权限(需配置具备write权限的社区字符串或SNMPv3读写组)
- 若采用TFTP中转方式,需准备可被设备访问的TFTP服务器
具体实现步骤
1. 设备端配置(以Cisco设备为例)
- 启用配置相关SNMP陷阱:
snmp-server enable traps config - 确认设备可访问TFTP服务器(配置对应路由、防火墙规则)
- 记住关键OID:
- Running-config OID:
1.3.6.1.4.1.9.9.96.1.1.1.1.2.1 - Startup-config OID:
1.3.6.1.4.1.9.9.96.1.1.1.1.2.2 - ConfigCopyMIB触发OID:
1.3.6.1.4.1.9.9.96.1.1.1.1(用于触发配置导出到TFTP)
- Running-config OID:
2. Zabbix端操作方案
方案一:直接通过SNMP读取配置OID
适合小型配置文件,通过Zabbix自定义脚本调用SNMP工具批量获取内容:
- 编写bash脚本(示例):
#!/bin/bash # 参数:设备IP SNMP_COMM="your_read_community" RUN_CFG_OID="1.3.6.1.4.1.9.9.96.1.1.1.1.2.1" snmpbulkwalk -v2c -c $SNMP_COMM $1 $RUN_CFG_OID | awk -F': ' '{print $2}' > /zabbix/config_backups/${1}_running.cfg - 在Zabbix中创建自定义监控项,设置为主动式或被动式调用该脚本,定时执行备份
方案二:通过SNMP触发设备导出配置到TFTP,再拉取到Zabbix
适合大配置文件,避免SNMP传输超时:
- 编写触发脚本(示例):
#!/bin/bash # 参数:设备IP SNMP_WRITE_COMM="your_write_community" TFTP_SERVER="tftp://x.x.x.x/config_backups" # 触发running-config导出到TFTP snmpset -v2c -c $SNMP_WRITE_COMM $1 \ 1.3.6.1.4.1.9.9.96.1.1.1.1.3.1 i 1 \ 1.3.6.1.4.1.9.9.96.1.1.1.1.4.1 s "${TFTP_SERVER}/${1}_running.cfg" \ 1.3.6.1.4.1.9.9.96.1.1.1.1.5.1 i 1 # 从TFTP拉取到Zabbix服务器 tftp -g -r ${1}_running.cfg x.x.x.x -l /zabbix/config_backups/${1}_running.cfg - 同样在Zabbix中配置定时执行的自定义监控项或自动发现规则
参考文章核心内容(原英文文章翻译)
- 多数Cisco IOS设备支持ConfigCopyMIB,该MIB是通过SNMP操作配置文件的核心依据
- 必须确保SNMP字符串具备读写权限,否则无法触发配置导出操作
- 直接读取配置OID时,推荐使用SNMP v2c/v3的GET-BULK命令,相比v1的GET-NEXT效率更高,适合大文本内容
- 若设备配置较大,优先选择TFTP中转方式,避免SNMP单次传输超时或长度限制问题
- 操作前需验证设备与TFTP服务器的连通性,避免配置导出失败
内容的提问来源于stack exchange,提问作者Arafat Absi
相关产品推荐
相关产品推荐

