网络工程师工具箱v1.6

Network Toolbox - 网络工程师工具箱

一个由本人开发的专为网络工程师设计的多功能工具箱,集成了批量配置生成、防火墙策略管理、巡检文件处理等常用工具,并支持插件扩展功能。

工具箱界面

项目地址:https://gitee.com/tianxiang1996/network-toolbox

✨ 主要功能

🔧 核心工具

  • 批量配置生成工具 - 基于Excel表格和Jinja2模板批量生成网络设备配置
  • 防火墙策略生成工具 - 将Excel表格转换为防火墙策略配置文件
  • 巡检信息合并工具 - 合并特定格式的巡检文件,便于统一分析

🔌 插件系统

  • 可扩展架构 - 支持动态加载插件,扩展工具功能
  • 插件管理 - 图形化插件管理界面,支持插件的启用/禁用
  • 标准接口 - 提供统一的插件开发接口,便于第三方开发

📊 其他特性

  • 现代化UI - 基于PySide6的美观界面
  • 进度显示 - 实时显示任务执行进度
  • 多平台支持 - 支持Windows、macOS等平台

🚀 快速开始

下载预编译版本

下载对应平台的预编译版本:

源码运行

1
2
3
4
5
6
7
8
9
# 克隆项目
git clone https://gitee.com/tianxiang1996/network-toolbox.git
cd network-toolbox

# 安装依赖
pip install -r requirements.txt

# 运行程序
python main.py

📖 使用说明

批量配置生成工具

工具概述

一个基于 Jinja2 模板引擎 的文本生成工具,通过读取Excel表格数据和自定义模板,批量生成网络设备配置脚本、文档或其他格式化文本文件。

功能特性

  • ✅ 支持 Excel (.xlsx/.xls) 文件读取
  • ✅ 基于 Jinja2 模板引擎,功能强大
  • ✅ 内置 IP 地址计算插件
  • ✅ 支持批量文件生成
  • ✅ 支持单文件合并输出
  • ✅ 自定义文件命名规则
  • ✅ 支持模板循环和条件判断

使用说明

基本操作流程

  1. 准备Excel文件: 创建带表头的Excel表格,表头将作为模板变量
  2. 编写模板文件: 使用Jinja2语法编写.txt格式的模板文件
  3. 选择输出目录: 工具会自动创建output文件夹存放生成的文件
  4. 配置生成选项: 根据需要选择文件命名和输出方式
  5. 执行生成: 点击生成按钮,工具会逐行处理Excel数据

配置选项说明

选项 说明 默认行为
XLSX文件 选择Excel数据源文件 支持.xlsx和.xls格式,推荐使用.xlsx
模板文件 选择Jinja2模板文件 必须是.txt格式
输出目录 指定文件输出位置 自动创建output子目录
文件前缀 自定义文件命名列 默认使用第一列作为文件名
输出到单个文件 合并所有输出到一个文件 默认为每行数据生成单独文件

快速入门示例

示例数据准备

Excel文件 (ip.xlsx)

设备名及标签 带外IP 带外网关 接口IP 位置
SW1 192.168.10.1 192.168.10.254 172.16.31.1
SW2 192.168.10.2 192.168.10.254 172.16.31.5
SW3 192.168.10.3 192.168.10.254 172.16.31.9
SW4 192.168.10.4 192.168.10.254 172.16.31.13 西

模板文件示例

模板文件 (temp.txt)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
sysname {{设备名及标签}}
#
interface M-GigabitEthernet0/0/0
description MGT
ip address {{带外IP}} 255.255.255.0
#
interface GigabitEthernet1/0/1
port link-mode route
ip address {{接口IP}} 255.255.255.0
#
ip route-static 0.0.0.0 0 {{带外网关}} description OB
ip route-static 10.0.0.0 8 {% ip 接口IP , "+1" %} description OB
#
{% if 位置 == '东' %}
info-center loghost 192.168.1.1
info-center loghost 192.168.1.2
{% else %}
info-center loghost 172.16.1.1
info-center loghost 172.16.1.2
{% endif %}

生成结果

输出文件结构

1
2
3
4
5
output/
├── SW1_line2.txt
├── SW2_line3.txt
├── SW3_line4.txt
└── SW4_line5.txt

生成的配置文件 (SW1_line2.txt)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
sysname SW1
#
interface M-GigabitEthernet0/0/0
description MGT
ip address 192.168.10.1 255.255.255.0
#
interface GigabitEthernet1/0/1
port link-mode route
ip address 172.16.31.1 255.255.255.0
#
ip route-static 0.0.0.0 0 192.168.10.254 description OB
ip route-static 10.0.0.0 8 172.16.31.2 description OB
#
info-center loghost 192.168.1.1
info-center loghost 192.168.1.2

高级功能

1. 自定义文件命名

默认使用Excel第一列作为文件名,可通过”文件前缀”选项指定其他列。

示例: 指定”带外IP”作为文件名

1
2
3
4
5
output/
├── 192.168.10.1_line2.txt
├── 192.168.10.2_line3.txt
├── 192.168.10.3_line4.txt
└── 192.168.10.4_line5.txt

2. 单文件输出模式

勾选”输出到单个文件”选项,所有生成内容合并到output.txt文件中。

模板示例:

1
network {% ip 接口IP , "netmask_30" %} 0.0.0.3

输出结果 (output.txt):

1
2
3
4
network 172.16.31.0 0.0.0.3
network 172.16.31.4 0.0.0.3
network 172.16.31.8 0.0.0.3
network 172.16.31.12 0.0.0.3

3. 模板循环功能

使用Jinja2的for循环语法处理重复配置。

模板示例:

1
2
3
4
5
6
7
8
9
{% for i in range(1, 10) %}
#
interface Ten-GigabitEthernet1/0/{{i}}
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 2 to 4094
port link-aggregation group {{i}}
{% endfor %}

输出效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
interface Ten-GigabitEthernet1/0/1
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 2 to 4094
port link-aggregation group 1
#
interface Ten-GigabitEthernet1/0/2
port link-mode bridge
port link-type trunk
undo port trunk permit vlan 1
port trunk permit vlan 2 to 4094
port link-aggregation group 2
...

IP地址计算插件

插件语法

1
{% ip address, operation %}

支持的操作类型

1. 地址运算
操作 语法 说明 示例
地址加法 "+数值" IP地址增加指定数值 {% ip "192.168.1.1", "+1" %}192.168.1.2
地址减法 "-数值" IP地址减少指定数值 {% ip "192.168.1.10", "-5" %}192.168.1.5
IPv6运算 "+/-数值" 支持IPv6地址运算 {% ip "2001::1", "+1" %}2001::2
2. 网络地址计算
操作 语法 说明 示例
CIDR掩码 "netmask_位数" 获取网络地址 {% ip "192.168.1.100", "netmask_24" %}192.168.1.0
点分掩码 "netmask_掩码" 获取网络地址 {% ip "192.168.1.100", "netmask_255.255.255.0" %}192.168.1.0
IPv6网络 "netmask_位数" IPv6网络地址 {% ip "2001::100", "netmask_64" %}2001::
3. 地址与掩码组合
操作 语法 说明 示例
CIDR格式 位数 返回地址+点分掩码 {% ip "192.168.1.1", 24 %}192.168.1.1 255.255.255.0
位数格式 "掩码" 返回地址+CIDR位数 {% ip "192.168.1.1", "255.255.255.0" %}192.168.1.1 24
IPv6格式 位数 IPv6地址+前缀长度 {% ip "2001::1", 64 %}2001::1 64
4. 特殊操作
操作 语法 说明 示例
原样返回 无参数或其他值 直接返回原地址 {% ip "192.168.1.1" %}192.168.1.1

错误处理

错误类型 返回值 触发条件
地址格式错误 IPERROR IP地址格式不正确
掩码格式错误 NETMASKERROR 子网掩码格式不正确

IP插件使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 基本地址运算
下一跳地址: {% ip "192.168.1.1", "+1" %}
前一个地址: {% ip "192.168.1.10", "-1" %}

# 网络地址计算
网络地址: {% ip "192.168.1.100", "netmask_24" %}
广播地址: {% ip "192.168.1.100", "netmask_24" %} (需要额外计算)

# 地址掩码组合
接口配置: ip address {% ip "192.168.1.1", 24 %}
路由配置: ip route {% ip "10.0.0.0", "255.255.255.0" %} 192.168.1.1

# IPv6支持
IPv6地址: {% ip "2001:db8::1", "+100" %}
IPv6网络: {% ip "2001:db8::100", "netmask_64" %}

Jinja2模板语法参考

基本语法

语法 用途 示例
{{ 变量名 }} 输出变量值 {{ 设备名及标签 }}
{% 控制语句 %} 控制流程 {% if 条件 %}...{% endif %}
`` 模板注释 ``

条件判断

1
2
3
4
5
6
7
{% if 位置 == '东' %}
东区配置
{% elif 位置 == '西' %}
西区配置
{% else %}
默认配置
{% endif %}

循环语句

1
2
3
4
5
6
7
{% for item in items %}
配置项: {{ item }}
{% endfor %}

{% for i in range(1, 5) %}
端口 {{ i }}
{% endfor %}

过滤器

1
2
3
{{ 设备名及标签|upper }}          # 转大写
{{ 接口IP|replace('.', '_') }} # 字符替换
{{ 描述|default('无描述') }} # 默认值

使用建议

✅ 最佳实践

  1. Excel准备

    • 使用清晰的表头名称作为模板变量
    • 避免表头中包含特殊字符和空格
    • 数据格式保持一致性
  2. 模板设计

    • 使用有意义的变量名
    • 添加适当的注释说明
    • 测试模板的各种数据情况
  3. 文件管理

    • 为不同用途创建专门的模板
    • 保持模板文件的版本控制
    • 定期备份重要模板
  4. 性能优化

    • 大量数据时考虑分批处理
    • 复杂模板先用小数据集测试

⚠️ 注意事项

  1. 文件格式: 确保Excel文件格式正确,推荐使用.xlsx格式
  2. 编码问题: 模板文件使用UTF-8或GBK编码,避免中文乱码
  3. 变量命名: Excel表头名称直接作为模板变量,注意命名规范
  4. 路径问题: 避免文件路径包含特殊字符
  5. 数据验证: 生成前检查Excel数据的完整性和正确性

故障排除

常见问题

问题 可能原因 解决方案
模板变量未替换 表头名称与模板变量不匹配 检查Excel表头与模板变量名称
生成文件为空 模板语法错误 检查Jinja2语法是否正确
IP计算返回错误 IP地址格式不正确 验证Excel中IP地址格式
文件名包含非法字符 文件名列包含特殊字符 使用其他列作为文件名或清理数据
中文显示乱码 编码问题 确保模板文件使用UTF-8或GBK编码

调试技巧

  1. 简化测试: 先用简单模板和少量数据测试
  2. 逐步复杂: 逐步添加复杂的模板逻辑
  3. 变量检查: 在模板中输出变量值进行调试
  4. 语法验证: 使用在线Jinja2语法检查工具

扩展资源


如需技术支持或功能建议,请联系我或提交Issue。

防火墙策略生成工具 (FWP)

工具概述

本工具可以根据Excel模板信息自动生成防火墙策略配置,目前支持 H3C Comware V7 安全策略。

功能特性

  • ✅ 支持批量策略生成
  • ✅ 支持对象组自动分析
  • ✅ 支持地址组和应用组配置
  • ✅ 支持自定义命令扩展
  • ✅ 提供Excel模板导出功能

配置选项

输出对象组

分析表格中的地址组和应用组信息,自动生成对象组配置。

强制使用对象组

不分析策略中的地址网段信息,按照原始格式生成对象组策略。


模板格式说明

1. 策略模板格式

可通过工具中的 “导出表格模版” 按钮获取标准模板。

源区域 目的区域 策略名称 源地址 目的地址 源端口 目的端口 动作 描述 自定义命令
Trust Untrust rule-0 192.168.1.1,192.168.2.0/24 server port1 http,ping,4567 permit,log,count 示例
字段说明
字段 说明 格式要求 示例
源区域 源安全域 多个用英文逗号分隔 Trust,DMZ
目的区域 目的安全域 多个用英文逗号分隔 Untrust,Internet
策略名称 策略规则名称 必填,支持字母、数字、中文
⚠️ 建议避免使用中文
rule-web-access
源地址 源IP地址或地址组 支持单IP、网段、地址组
多个用英文逗号分隔
192.168.1.1,192.168.2.0/24,server-group
目的地址 目的IP地址或地址组 支持单IP、网段、地址组
多个用英文逗号分隔
10.0.0.1/32,web-servers
源端口 源端口或应用组 支持单端口、端口范围、应用组
未指定协议默认TCP
tcp:80,443,8080-8090,web-ports
目的端口 目的端口或应用组 支持单端口、端口范围、应用组
未指定协议默认TCP
http,https,tcp:3306,mysql-group
动作 策略动作 多个动作用英文逗号分隔 permit,log,count
描述 策略描述 支持字母、数字、中文
⚠️ 建议避免使用中文
Allow web access
自定义命令 额外配置命令 英文逗号表示换行 rule move 1 before 10,rule enable
动作类型
动作 说明 可选值
允许 允许流量通过 pass, permit
拒绝 拒绝流量通过 drop, deny
日志 记录日志 log
统计 统计流量 count

默认动作: 如未指定,默认为拒绝 (deny)

2. 地址组模板格式

名称 地址段 安全域
server 192.168.3.0/24 Untrust
web-servers 10.0.1.0/24,10.0.2.0/24 DMZ
字段说明
字段 说明 格式要求 示例
名称 地址组名称 必填,支持字母、数字、中文
⚠️ 建议避免使用中文
web-servers
地址段 IP地址或网段 支持单IP、网段、其他地址组
多个用英文逗号分隔
192.168.1.0/24,10.0.0.1
安全域 所属安全域 一个地址组只能属于一个安全域 Trust

3. 应用组模板格式

名称 源端口 目的端口
port1 30000-35000
web-services tcp:80,tcp:443
字段说明
字段 说明 格式要求 示例
名称 应用组名称 必填,支持字母、数字、中文
⚠️ 建议避免使用中文
web-services
源端口 源端口范围 支持单端口、端口范围
未指定协议默认TCP
tcp:80,443,8080-8090
目的端口 目的端口范围 支持单端口、端口范围
未指定协议默认TCP
tcp:3306,udp:53

端口格式说明

支持的端口格式

格式 说明 示例
端口号 单个端口,默认TCP 80, 443
协议:端口号 指定协议的单个端口 tcp:80, udp:53
端口范围 连续端口范围,默认TCP 8080-8090
协议:端口范围 指定协议的端口范围 tcp:8080-8090
预定义服务 系统预定义服务名 http, https, ssh, ping

常用预定义服务

服务名 协议 端口 说明
http TCP 80 HTTP服务
https TCP 443 HTTPS服务
ssh TCP 22 SSH服务
telnet TCP 23 Telnet服务
ftp TCP 21 FTP服务
ping ICMP - ICMP Ping

使用建议

✅ 最佳实践

  1. 命名规范: 使用英文字母、数字和连字符,避免特殊字符
  2. 策略描述: 提供清晰的策略用途说明
  3. 地址规划: 合理规划地址组,避免重复定义
  4. 端口管理: 使用应用组管理常用端口组合
  5. 测试验证: 生成配置后在测试环境验证

⚠️ 注意事项

  1. 编码问题: 由于终端软件编码限制,建议避免使用中文字符
  2. 策略顺序: 注意防火墙策略的匹配顺序,重要策略应放在前面
  3. 安全域: 确保地址组的安全域设置正确
  4. 端口协议: 明确指定端口协议,避免默认行为造成的配置错误

故障排除

常见问题

问题 原因 解决方案
生成的配置有乱码 使用了中文字符 使用英文字符替代
策略不生效 策略顺序错误 调整策略在防火墙中的顺序
地址组配置错误 安全域设置错误 检查地址组的安全域配置
端口配置无效 端口格式错误 检查端口格式是否符合要求

如需更多帮助,请参考 H3C Comware V7 官方文档或联系技术支持。

🔄 版本历史

  • v1.6 (2025-06-15)

    • 新增插件系统支持
    • 重构代码架构
    • 优化用户界面
    • 增强错误处理
  • v1.5及以前版本

    • 基础工具功能实现
    • 批量配置生成
    • 防火墙策略管理

💡 提示: 该说明由AI生成,如果您在使用过程中遇到问题,请查看相关文档或提交Issue获取帮助。


网络工程师工具箱v1.6
https://www.intx.work/posts/d39730bd.html
发布于
2025年6月29日
更新于
2025年6月29日
许可协议