开源简单网络巡检工具(NetDevOps)项目

admin 2023年3月15日13:08:18评论97 views字数 2723阅读9分4秒阅读模式
概况:

该应用实现对交付工程师在交付交付中无相应网管设备,或者中小型网络运维无网管设备,需要对交换机设备做批量的信息收集而开发的一个可扩展性的网络设备信息收集工具。
工具特点:可以很便捷的扩展需要的功能,不需要去关注怎么连接设备问题,怎么处理数据问题,只需要在模板中添加对应模板,跟对应的收集数据函数就可以完成功能的扩展,可以适用于更多场景。
开源简单网络巡检工具(NetDevOps)项目
开源简单网络巡检工具(NetDevOps)项目
功能:

下载导入模板

该功能主要实现对需要批量添加的设备生成一个excel文档,用来填写相应信息。

批量导入模板

该功能主要实现对填写好的excel导入到数据库中,用来进行对设备操作
开源简单网络巡检工具(NetDevOps)项目


新增设备

该功能主要用于方便快捷的添加单台设备

开源简单网络巡检工具(NetDevOps)项目


测试连接

主要用于测试设备的端口是否连通正常

开源简单网络巡检工具(NetDevOps)项目


启动巡检

主要用于启动设备连接,执行插件模板中的函数,执行完成根据插件模板中的函数返回的内容形成excel文档.

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目开源简单网络巡检工具(NetDevOps)项目


备份配置文件

主要用于收集设备的配置文件,默认以txt格式文件存储.

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目


查询接口

在多台设备中查找出一台显示

编辑接口

主要用于修改设备信息

删除接口

删除数据库中的设备
说明:


工具架构

该工具使用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'sysnames(.*)', 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 Usages+: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'sysnames(.*)', 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, VersionsS+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以上

开源简单网络巡检工具(NetDevOps)项目


python -m pip install --upgrade pip
#更新pip

开源简单网络巡检工具(NetDevOps)项目

python -m pip install --user pipx -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装pipx

开源简单网络巡检工具(NetDevOps)项目

pipx刷新到系统变量中
python -m pipx ensurepath

开源简单网络巡检工具(NetDevOps)项目

# 确认pipx安装是否正常
pipx --version

开源简单网络巡检工具(NetDevOps)项目

# 安装poetry会稍微有点慢
pipx install poetry -i https://pypi.tuna.tsinghua.edu.cn/simple

开源简单网络巡检工具(NetDevOps)项目

# 安装好确认安装正常
poetry -V

开源简单网络巡检工具(NetDevOps)项目

# 进入项目目录

开源简单网络巡检工具(NetDevOps)项目

# 安装依赖
poetry install

开源简单网络巡检工具(NetDevOps)项目

# 运行项目 
poetry run run.py

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目


默认监控18888端口

运行后访问127.0.0.1:18888为前端页面

接口文档地址为127.0.0.1:18888/docs

可以通过本地访问,也可以通过远端访问

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目

开源简单网络巡检工具(NetDevOps)项目

原文始发于微信公众号(释然IT杂谈):开源简单网络巡检工具(NetDevOps)项目

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月15日13:08:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   开源简单网络巡检工具(NetDevOps)项目https://cn-sec.com/archives/1605871.html

发表评论

匿名网友 填写信息