开源简单网络巡检工具(NetDevOps)项目
该应用实现对交付工程师在交付交付中无相应网管设备,或者中小型网络运维无网管设备,需要对交换机设备做批量的信息收集而开发的一个可扩展性的网络设备信息收集工具。
工具特点:可以很便捷的扩展需要的功能,不需要去关注怎么连接设备问题,怎么处理数据问题,只需要在模板中添加对应模板,跟对应的收集数据函数就可以完成功能的扩展,可以适用于更多场景。
功能:
下载导入模板
该功能主要实现对需要批量添加的设备生成一个excel文档,用来填写相应信息。
批量导入模板
该功能主要实现对填写好的excel导入到数据库中,用来进行对设备操作
新增设备
该功能主要用于方便快捷的添加单台设备
测试连接
主要用于测试设备的端口是否连通正常
启动巡检
主要用于启动设备连接,执行插件模板中的函数,执行完成根据插件模板中的函数返回的内容形成excel文档.
备份配置文件
主要用于收集设备的配置文件,默认以txt格式文件存储.
查询接口
在多台设备中查找出一台显示
编辑接口
主要用于修改设备信息
删除接口
删除数据库中的设备说明:
工具架构
该工具使用FastAPI做为后端框架,前端使用的VUE3进行开发的完全前后端分离项目。
设备驱动
设备类型驱动均为netmiko驱动,设备类型必须填写netmiko驱动列表中的设备,后端有校验,在录入设备时,会对设备类型字段和协议字段进行校验,为枚举类型。
可扩展性
对于需要定义的收集信息,可以按照一定规范编写函数,返回内容即可完成相关信息的扩展。
例如该华为模板固定写法------>导入DataHandle类装饰器,导入netmiko中的BaseConnection做为类型注解,可以在编写时便捷,需要执行巡检的函数添加到all方法中,备份配置文件函数需要写固定函数名。导入完成后实例化DataHandle类装饰器,目前DataHandle类装饰器实现了两个方法装饰器backup_config做为保存成txt配置文件的装饰器,需要固定返回数据和文件名 return 数据,文件名 --->数据做为写入到文件中的内容,文件名作为保存的文件名。data做为一个收集信息保存到excel的装饰器,在开发模板函数时,只需要使用该装饰器,并且固定返回两个值,data和table即可,data做为excel表数据,table做为列名
from API.decorator import DataHandle
import re
from netmiko import BaseConnection
data = DataHandle()
__all__ = ['huawei_name', 'huawei_version', 'huawei_cpu']
@data.backup_config
def backup_config(conn: BaseConnection):
output = conn.send_command(command_string='display current-configuration')
file_names = re.search(r'sysname\s(.*)', output).group(1)
file_name = f'{file_names}.txt'
data = output
return data, file_name
@data.data
def huawei_cpu(conn: BaseConnection):
print(f'------>执行了huawei_cpu方法')
table = 'CPU'
output = conn.send_command(command_string='display cpu-usage')
data = re.search(r'CPU Usage\s+:\s([0-9]{1,3}%)', output).group(1)
return data, table
@data.data
def huawei_name(conn: BaseConnection):
print(f'------>执行了huawei_name方法')
table = 'name'
output = conn.send_command(command_string='display current-configuration | include sysname')
data = re.search(r'sysname\s(.*)', output).group(1)
return data, table
@data.data
def huawei_version(conn: BaseConnection):
print(f'------>执行了huawei_version方法')
table = 'version'
output = conn.send_command(command_string='display version')
data = re.search(r'VRP \(R\) software, Version\s\S+\s\(\S+\s(V[0-9]+R[0-9]+C[0-9]+)\)', output).group(1)
return data, table
部署:
环境
Python 3.10以上部署测试机为Windows10
部署命令
python -v
#3.10以上
python -m pip install --upgrade pip
#更新pip
python -m pip install --user pipx -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装pipx
# pipx刷新到系统变量中
python -m pipx ensurepath
# 确认pipx安装是否正常
pipx --version
# 安装poetry会稍微有点慢
pipx install poetry -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装好确认安装正常
poetry -V
# 进入项目目录
# 安装依赖
poetry install
# 运行项目
poetry run run.py
默认监控18888端口
运行后访问127.0.0.1:18888为前端页面
接口文档地址为127.0.0.1:18888/docs
可以通过本地访问,也可以通过远端访问