一个功能强大的Python GUI应用程序,专门用于自动化与网络交换机(特别是中兴、华为、华三等品牌)的串口交互过程。
- 实时按键捕捉: 直接在终端区域输入,每个按键立即发送到设备
- 统一交互界面: 移除独立命令输入框,在主终端区域直接交互
- 智能光标管理: 自动维护输入/输出区域分离,防止误编辑历史输出
- ANSI 转义码支持: 基本支持设备的颜色和格式控制
- 特殊按键处理: 支持 Tab 补全、? 帮助、Ctrl+C 中断等
- 智能提示符检测: 自动识别用户名、密码提示符
- 多设备兼容: 支持华为、中兴、华三等主流设备
- 可配置响应: 自定义提示符和对应响应
- 登录状态显示: 实时显示登录进度和结果
- 交互式模式: SecureCRT 风格的直接终端交互
- 传统模式: 保持原有的命令输入框方式
- 无缝切换: 运行时可随时切换操作模式
- 自动检测COM端口: 启动时自动扫描系统中所有可用的COM端口
- 智能波特率识别: 自动尝试标准波特率列表,识别设备的正确波特率
- 手动配置: 支持手动选择COM端口和波特率
- 实时连接状态: 显示连接状态和设备信息
- 自动厂商识别: 基于设备响应自动识别中兴、华为、华三等厂商
- 设备信息提取: 自动提取设备型号、版本、主机名等信息
- 多命令尝试: 使用多种识别命令确保兼容性
- 预制命令序列: 内置常用的设备配置查询命令
- 自定义序列: 支持创建、编辑、保存自定义命令序列
- 批量执行: 一键执行完整的命令序列
- 实时进度: 显示命令执行进度和状态
- 实时输出: 终端风格的实时命令输出显示
- 自动日志: 自动记录所有交互过程到日志文件
- 手动保存: 支持将输出内容保存为文本文件
- 会话管理: 每次连接自动创建独立的会话日志
- 交互式终端: SecureCRT 风格的专业终端界面
- 双模式切换: 交互式和传统模式随时切换
- 实时反馈: 详细的状态提示和错误信息
- 快捷操作: 支持键盘快捷键和特殊按键
- 响应式设计: 自适应窗口大小调整
- 本地回显控制: 可选择本地回显或等待设备回显
- ANSI 序列处理: 支持基本的颜色和格式控制
- 智能退格处理: 正确处理设备的退格响应
- 多线程架构: 后台数据处理不阻塞界面操作
- Python 3.7 或更高版本
- Windows/Linux/macOS 操作系统
-
克隆或下载项目
git clone https://github.com/xiaojuwa/Automatic-console-configuration.git cd Automatic-console-configuration
-
安装依赖包
pip install -r requirements.txt
-
运行程序
python main.py
-
选择COM端口
- 点击"刷新"按钮扫描可用端口
- 从下拉列表中选择目标COM端口
-
设置波特率
- 点击"自动检测"让程序自动识别波特率
- 或手动从下拉列表中选择/输入波特率
-
配置自动登录(可选)
- 在"自动登录"区域输入用户名和密码
- 勾选"启用自动登录"
- 点击"保存配置"
-
建立连接
- 点击"连接"按钮建立串口连接
- 连接成功后状态栏显示"已连接"
- 如启用自动登录,程序会自动完成登录过程
-
自动识别
- 连接成功后点击"设备识别"按钮
- 程序会自动发送识别命令并解析设备信息
-
查看信息
- 设备信息区域会显示识别出的厂商、型号、版本等信息
-
交互式模式(推荐)
- 连接成功后,交互式终端自动激活
- 直接在黑色终端区域输入命令
- 每个按键立即发送到设备,实现实时交互
- 支持特殊按键:
Tab
: 命令补全?
: 命令帮助Ctrl+C
: 中断当前操作Backspace
: 删除字符Enter
: 执行命令
-
传统模式
- 选择"传统"模式切换到原有操作方式
- 在底部命令输入框输入命令
- 点击"发送"按钮或按回车键执行
-
模式切换
- 在终端控制面板选择"交互式"或"传统"模式
- 可随时切换,无需重新连接
-
选择序列
- 从"命令序列"下拉列表中选择预制的命令序列
- 查看序列描述和适用厂商信息
-
执行命令
- 点击"执行序列"按钮开始执行
- 进度条显示执行进度
- 输出区域实时显示命令和响应
-
手动命令
- 在底部输入框中输入单个命令
- 按回车键或点击"发送"按钮执行
-
编辑序列
- 选择要编辑的序列,点击"编辑"按钮
- 在编辑窗口中修改序列信息和命令列表
-
创建新序列
- 点击"编辑"按钮,在弹出窗口中创建新序列
- 添加命令、设置延时和描述
-
命令管理
- 支持添加、编辑、删除、排序命令
- 每个命令可设置执行延时和描述信息
-
查看输出
- 所有命令和响应都会在输出区域实时显示
- 支持自动滚动到最新内容
-
保存日志
- 点击"保存日志"按钮将当前输出保存为文件
- 自动日志文件保存在logs目录中
-
清空输出
- 点击"清空输出"按钮清除当前显示内容
程序会自动创建config.json
配置文件,包含以下设置:
{
"baudrates": [9600, 19200, 38400, 57600, 115200],
"timeout": 3,
"device_patterns": {
"ZTE": ["ZTE", "ZXR", "ZXUN"],
"Huawei": ["Huawei", "VRP", "HUAWEI"],
"H3C": ["H3C", "Comware", "HP"]
},
"common_prompts": [">", "#", "]", "$", "%"],
"identification_commands": [
"display version",
"show version",
"show system",
"display device"
],
"log_directory": "logs",
"commands_directory": "commands",
"auto_login": {
"enabled": false,
"username": "",
"password": "",
"enable_password": "",
"timeout": 30,
"prompts": {
"username": ["Username:", "login:", "User:", "用户名:"],
"password": ["Password:", "password:", "密码:"],
"enable": [">"],
"enable_password": ["Password:", "password:", "密码:"],
"success": ["#", "]"],
"more": ["More", "--More--", "---- More ----"]
}
},
"terminal": {
"local_echo": false,
"line_ending": "\r\n",
"font_family": "Consolas",
"font_size": 10,
"bg_color": "black",
"fg_color": "green",
"auto_scroll": true
}
}
network-device-assistant/
├── main.py # 主程序和GUI界面
├── config.py # 配置文件管理
├── serial_manager.py # 串口通信管理
├── device_detector.py # 设备识别模块
├── command_manager.py # 命令管理模块
├── auto_login_manager.py # 自动登录管理器
├── interactive_terminal.py # 交互式终端模拟器
├── requirements.txt # 依赖包列表
├── README.md # 说明文档
├── config.json # 配置文件(自动生成)
├── logs/ # 日志文件目录(自动创建)
└── commands/ # 命令序列文件目录(自动创建)
├── 基本信息查询.json
├── 华为基本配置.json
├── 中兴基本配置.json
└── 华三基本配置.json
-
无法检测到COM端口
- 检查设备是否正确连接
- 确认驱动程序已正确安装
- 尝试重新插拔设备
-
连接失败
- 检查COM端口是否被其他程序占用
- 确认波特率设置正确
- 检查串口线缆连接
-
设备识别失败
- 确认设备已正确启动
- 尝试手动发送识别命令
- 检查设备是否支持标准命令
-
命令执行无响应
- 检查设备连接状态
- 增加命令执行延时
- 确认命令语法正确
-
交互式终端无法输入
- 确认已选择"交互式"模式
- 检查终端区域是否获得焦点
- 尝试点击终端区域激活
-
自动登录失败
- 检查用户名密码是否正确
- 确认设备提示符格式
- 增加登录超时时间
-
按键无响应
- 确认设备连接正常
- 检查串口是否被其他程序占用
- 尝试切换到传统模式测试
如遇到问题,请检查:
- Python版本是否符合要求
- 依赖包是否正确安装
- 配置文件是否完整
- 日志文件中的错误信息
本项目采用MIT许可证,详见LICENSE文件。