Zabbix下利用SNMP+ARP做到自动发现网络设备

本文介绍如何利用Zabbix的SNMP和ARP功能实现网络设备的自动发现。通过Python脚本,结合Zabbix API获取已管理设备IP,使用SNMP获取设备ARP表,对比找出未被管理的设备并发送通知,从而增强设备资产管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

具体脚本全部使用python

网络设备的资产管理重要性,如果我们可以保证zbx里面的设备信息正确性,完整性,实时性,那么我们就可以把利用zbx官方api随时获取设备信息,使用脚本进行自动化管理和其他系统联动,类似于LDAP一样。

实际环境和思路

1.在实际网络环境中我们可以手动更新汇聚/核心层网络设备资产,纳入zabbix管理,但是还拥有大量的接入交换机设备,大部分可能由负责该区域的同事配置管理。我希望能够通过尽量完善所有网络设备加入zabbix纳管。
2.zabbix自带的自动发现规则,依赖于2个必须条件,①access-sw与zbx的网络可达。②已经配置了snmp。在实际情况中有可能配置的人只配置可telnet/ssh等远程管理和一些基础配置,遗漏了默认路由,snmp配置的情况,那么zbx的自动发现规则是无法成功添加的。
我的思路:使用zbx的api获取当前已经纳管的网络设备的IP列表,然后顺序通过snmp协议获取该网络设备的管理vlan的ARP表,然后与列表进行比对,发现不在列表中的发送邮件通知,进行手动刷入交换机模板配置,再由zbx自动发现规则进行添加。

自动发现脚本

准备工作

1.python
2.easysnmp库 #easysnmp好像不兼容Windows,建议直接在zbx服务器上进行脚本测试。
3.MIB&OID #以华为为例子查询官方mib得到arp的oid是enterprises.2011.5.25.123.1.17.1.12.
4.snmpwalk

脚本步骤

1.使用API获取zabbix中指定分组/全部主机信息,返回一个List列表。#每一个元素是一台主机

2.循环list,使用snmp库获取该网络设备的全部arp信息列表

2.1.依次循环arp列表使用if筛选出管理vlan的arp

2.2.判断这个IP是否存在zbx

3.输出未加入zabbix网络设备的IP和异常信息

脚本参考如下

from easysnmp import snmp_walk,snmp_get
import json,re,requests
import csv
import time

#function area

#登录令牌
def get_token():
    data = {
   
   
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
   
   
            "user": username,
            "password": password
        },
        "id": 0
    }
    r = requests.get(zaurl, headers=header, data=json.dumps(data))
    auth = json.loads(r.text)
    return auth["result"]



#获取指定groupid的所有主机,如果不加第二个参数"分组名称"就返回zbx中全部主机信息 
def getHosts(token,group=Non
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值