本项目是一款用于 生成并对比网络设备配置文件 的图形化工具,适用于多种主流厂商(如华三、锐捷、华为、迈普等)的交换机、路由器、防火墙等设备。
通过可视化界面输入参数,程序将自动根据模板生成预期配置,并与实际设备的配置进行合规性差异检查,帮助提升网络运维人员的配置核查效率。
- ✅ 支持多厂商设备(华三接入交换机、锐捷接入交换机、华为核心交换机、华为接入路由器、华为防火墙、迈普网点路由器)
 - 📝 根据模板和输入参数自动生成标准配置
 - 🧾 自动对比实际配置与标准配置,生成详细差异报告
 - 🔐 支持 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 标准库自带)
 - 其他内置模块:
os、sys、re、typing、unicodedata等 - 已将py文件集成为exe文件,可直接双击运行
 
💡 需在 Windows 系统中运行。
git clone https://github.com/fzz-dev/Configuration_check.git在 template/ 目录下放置各类设备对应的配置模板(例如 huasan.txt、ruijie.txt)。
模板中可以使用占位符,例如:
sysname {HOSTNAME}
interface LoopBack0
 ip address {LoopBack0_IP} {LoopBack0_SUBNET_MASK}
<!-- IF TACACS_ENABLED -->
tacacs-server template {TACACS_SCHEME}
<!-- ENDIF -->
双击运行 配置比较.exe 启动应用程序或在程序命令行中输入
python gui.py- 在首页下拉菜单中选择设备类型
 
- 基本参数:主机名、IP地址、子网掩码等
 - ACL规则:
- 点击"添加规则"按钮新增ACL条目
 - 输入规则编号和允许的IP地址
 - 点击"删除"按钮移除不需要的规则
 
 - 服务配置:NTP、SNMP、系统日志等
 - 认证设置:本地用户/TACACS+/RADIUS
 - 跳转配置比较:点击“下一步”生成配置文件
 
- 点击"浏览"按钮选择设备导出的配置文件
 - 支持.txt格式的配置文件
 - 点击"开始比较"进行分析
 
软件会将预期配置与实际配置进行逐行对比,生成类似表格的输出:
[匹配的配置行]:
  -------------------------------------------------------------------------------------
  配置行                                            |   期望数量   |   实际数量  
  -------------------------------------------------------------------------------------
  + 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文件
 
generate_expected_config(template, params)
根据模板和输入参数生成标准配置内容。process_acl_rules()
根据用户输入动态生成 ACL 规则。process_conditional_blocks()
处理模板中通过<!-- IF ... -->包裹的条件配置块。compare_configs(expected, actual)
对比预期配置与实际配置,输出表格化差异结果。
- 提供用户友好的图形化界面
 - 通过 
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