Skip to content

fzz-dev/Configuration_check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🧰 网络设备配置合规性检查工具

📌 项目简介

本项目是一款用于 生成并对比网络设备配置文件 的图形化工具,适用于多种主流厂商(如华三、锐捷、华为、迈普等)的交换机、路由器、防火墙等设备。
通过可视化界面输入参数,程序将自动根据模板生成预期配置,并与实际设备的配置进行合规性差异检查,帮助提升网络运维人员的配置核查效率。


🧱 功能特性

  • ✅ 支持多厂商设备(华三接入交换机、锐捷接入交换机、华为核心交换机、华为接入路由器、华为防火墙、迈普网点路由器)
  • 📝 根据模板和输入参数自动生成标准配置
  • 🧾 自动对比实际配置与标准配置,生成详细差异报告
  • 🔐 支持 ACL 规则动态生成
  • 💡 支持条件配置块、占位符替换
  • 🪟 友好的图形化界面(基于 tkinter

🧰 目录结构

Configuration_check/
├─ config_generator.py     # 配置生成与比较逻辑
├─ gui.py                  # 图形界面程序入口
├─ template/               # 存放各类设备模板
│  ├─ huasan.txt
│  ├─ ruijie.txt
│  ├─ huawei_firewall.txt
│  ├─ huawei_core.txt
│  ├─ huawei.txt
│  └─ maipu.txt
└─ README.md               # 项目说明文档

🧭 环境依赖

  • Python 3.12
  • tkinter(Python 标准库自带)
  • 其他内置模块:ossysretypingunicodedata
  • 已将py文件集成为exe文件,可直接双击运行

💡 需在 Windows 系统中运行。


🖥️ 使用方法

1. 克隆项目或下载源码

git clone https://github.com/fzz-dev/Configuration_check.git

2. 准备配置模板

template/ 目录下放置各类设备对应的配置模板(例如 huasan.txtruijie.txt)。

模板中可以使用占位符,例如:

sysname {HOSTNAME}
interface LoopBack0
 ip address {LoopBack0_IP} {LoopBack0_SUBNET_MASK}
<!-- IF TACACS_ENABLED -->
tacacs-server template {TACACS_SCHEME}
<!-- ENDIF -->

3.使用步骤

1. 启动程序

双击运行 配置比较.exe 启动应用程序或在程序命令行中输入

python gui.py

2. 选择设备类型

  • 在首页下拉菜单中选择设备类型

3. 输入设备参数

  • 基本参数:主机名、IP地址、子网掩码等
  • ACL规则
    • 点击"添加规则"按钮新增ACL条目
    • 输入规则编号和允许的IP地址
    • 点击"删除"按钮移除不需要的规则
  • 服务配置:NTP、SNMP、系统日志等
  • 认证设置:本地用户/TACACS+/RADIUS
  • 跳转配置比较:点击“下一步”生成配置文件

4. 加载配置文件

  • 点击"浏览"按钮选择设备导出的配置文件
  • 支持.txt格式的配置文件
  • 点击"开始比较"进行分析

5. 查看比较结果

软件会将预期配置与实际配置进行逐行对比,生成类似表格的输出:

[匹配的配置行]:
  -------------------------------------------------------------------------------------
  配置行                                            |   期望数量   |   实际数量  
  -------------------------------------------------------------------------------------
  + interface loopback0                            | 期望数量: 1  | 实际数量: 1
  + ssh server enable                              | 期望数量: 1  | 实际数量: 1
  -------------------------------------------------------------------------------------

[缺失的配置行]:
  -------------------------------------------------------------------------------------
  配置行                                            |   期望数量   |  实际数量  
  -------------------------------------------------------------------------------------
  - snmp-agent community public                    | 期望数量: 1  | 实际数量: 0
  - ntp-service enable                             | 期望数量: 1  | 实际数量: 0
  -------------------------------------------------------------------------------------

[行数量不匹配]:
  -------------------------------------------------------------------------------------
  配置行                                            |   期望数量   |   实际数量  
  -------------------------------------------------------------------------------------
  ! user-interface vty 0 15                        | 期望次数: 2  | 实际次数: 1
  ! user-name-format without-domain                | 期望次数: 1  | 实际次数: 2
  -------------------------------------------------------------------------------------
  • 匹配的配置行:显示绿色(+)标记 ✅
  • 缺失的配置行:显示红色(-)标记 ❌
  • 数量不匹配行:显示黄色(!)标记 ⚠️
  • 使用右侧滚动条查看完整结果
  • 点击"保存结果"将比较结果保存为txt或html文件

⚙️ 核心逻辑介绍

📄 config_generator.py

  • generate_expected_config(template, params)
    根据模板和输入参数生成标准配置内容。
  • process_acl_rules()
    根据用户输入动态生成 ACL 规则。
  • process_conditional_blocks()
    处理模板中通过 <!-- IF ... --> 包裹的条件配置块。
  • compare_configs(expected, actual)
    对比预期配置与实际配置,输出表格化差异结果。

🪟 gui.py

  • 提供用户友好的图形化界面
  • 通过 tkinter 构建交互表单
  • 支持多种设备类型的参数输入表单
  • 绑定 config_generator.py 生成和对比配置
  • 支持导入配置文件并展示差异结果

🧪 设备模板示例

template/huasan.txt 示例:

sysname {HOSTNAME}
#
interface LoopBack0
 ip address {LoopBack0_IP} {LoopBack0_SUBNET_MASK}
#
acl number {ACL_NUMBER}
 rule 0 permit source {PERMITTED_IP_1} 0
#
snmp-agent community read {SNMP_COMMUNITY}

🧼 注意事项

  • 模板中所有占位符必须与输入参数名一一对应。
  • ACL 规则支持动态扩展,规则编号和 IP 按输入顺序生成。
  • 对比结果忽略 #! 以及空行。
  • 实际设备配置需以纯文本文件导入。

📝 开发信息

  • 作者:冯振洲
  • 版本:v1.0.0
  • 日期:2025-10-09

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages