# 采集箱出厂测试工具 ## 项目简介 这是一个用于自动化测试和配置采集箱设备的桌面应用程序。通过串口和SSH连接,自动完成设备的初始化配置、网络设置、安全加固等出厂测试流程。 ## 功能特性 - **串口通信**: 自动检测串口,建立与设备的串口连接 - **硬件信息读取**: 读取CPU序列号、MAC地址等硬件唯一标识 - **密码管理**: 自动生成高强度随机密码,支持加密存储 - **网络配置**: 自动配置双网卡(ETH-H0/ETH-H1)网络参数 - **SSH连接**: 测试SSH远程连接功能 - **文件传输**: 支持SFTP文件上传下载 - **系统配置**: 时区设置、时间同步等 - **测试报告**: 自动生成测试报告,支持导出 - **用户管理**: 多用户支持,角色权限控制 - **审计日志**: 完整的操作日志记录 ## 项目结构 ``` production_test_tool/ ├── src/ # 源代码目录 │ ├── main.py # 程序入口 │ ├── models.py # 数据模型 │ ├── database.py # 数据库操作 │ ├── serial_manager.py # 串口管理 │ ├── ssh_manager.py # SSH管理 │ ├── password_manager.py # 密码管理 │ ├── test_engine.py # 测试引擎 │ ├── ui/ # UI界面模块 │ │ ├── main_window.py # 主窗口 │ │ ├── login_dialog.py # 登录对话框 │ │ ├── widgets.py # 自定义控件 │ │ └── styles.py # 样式表 │ └── utils/ # 工具模块 │ ├── config.py # 配置管理 │ ├── logger.py # 日志工具 │ └── helpers.py # 辅助函数 ├── config/ # 配置文件 │ ├── config.json # 主配置 │ └── test_items.json # 测试项配置 ├── data/ # 数据目录 │ └── production_test.db # SQLite数据库 ├── logs/ # 日志目录 ├── resources/ # 资源文件 │ ├── icons/ # 图标 │ └── templates/ # 模板文件 ├── requirements.txt # Python依赖 └── README.md # 项目说明 ``` ## 安装要求 ### 系统要求 - Windows 10/11 或 Linux - Python 3.8+ - 串口设备驱动 ### Python依赖 ```bash pip install -r requirements.txt ``` 主要依赖包: - PyQt5 >= 5.15.0 (GUI界面) - pyserial >= 3.5 (串口通信) - paramiko >= 3.0.0 (SSH连接) - cryptography >= 41.0.0 (加密) - bcrypt >= 4.0.0 (密码哈希) - reportlab >= 4.0.0 (PDF报告) ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 运行程序 ```bash python src/main.py ``` ### 3. 登录系统 - 默认用户名: `admin` - 默认密码: `admin123` ### 4. 开始测试 1. 输入设备序列号 2. 选择串口 3. 点击"开始测试"按钮 ## 配置说明 ### 网络配置 (config/config.json) ```json { "network": { "eth0": { "connection_name": "ETH-H0", "ip": "192.168.0.3", "netmask": "255.255.255.0", "gateway": "192.168.0.1", "ethtool": { "speed": 100, "duplex": "full", "autoneg": "off" } }, "eth1": { "connection_name": "ETH-H1", "ip": "10.0.5.232", "netmask": "255.255.255.0", "gateway": "10.0.5.1" } } } ``` ### 测试项配置 (config/test_items.json) 可以自定义测试流程,添加或修改测试项目。 ## 📝 配置文件编辑器 新增了专业的 JSON 配置文件编辑窗口,支持可视化编辑配置文件。 ### 快速打开 - **快捷键**: `Ctrl+,` - **菜单**: 工具 → 编辑配置文件 - **脚本**: `python edit_config.py` ### 功能特性 - 树形结构展示 JSON 配置 - 智能编辑器(自动适配数据类型) - JSON 格式验证 - 自动备份原文件 - 修改跟踪和确认 ### 使用场景 修改串口波特率、网络参数、SSH配置、测试超时等,无需手动编辑 JSON。 📖 详见: [CONFIG_QUICK_REFERENCE.md](CONFIG_QUICK_REFERENCE.md) ## 测试流程 1. **串口连接建立** - 建立与设备的串口通信 2. **读取硬件信息** - 获取CPU序列号等硬件ID 3. **修改默认密码** - 将默认密码改为临时密码 4. **设置系统时区** - 设置为Asia/Shanghai 5. **配置网络接口ETH-H1** - 配置ethernet1 6. **配置网络接口ETH-H0** - 配置ethernet0(含ethtool参数) 7. **SSH连接测试** - 测试SSH远程连接 8. **文件传输测试** - 测试SFTP文件传输 9. **网络连通性测试** - ping网关测试 10. **系统时间同步** - 同步主机时间到设备 11. **设置最终强密码** - 生成并设置高强度随机密码 12. **生成设备标识文件** - 创建/etc/device_identity ## 打包为可执行文件 使用PyInstaller打包: ```bash pyinstaller --onefile --windowed --name "采集箱出厂测试工具" src/main.py ``` 或使用.spec配置文件进行高级打包。 ## 开发说明 ### 代码规范 - 遵循PEP 8编码规范 - 使用类型注解 - 编写完整的文档字符串 ### 测试 ```bash # 运行单元测试 python -m pytest tests/ ``` ### 日志 日志文件保存在 `logs/` 目录,按日期自动分割。 ## 安全说明 1. **密码加密**: 所有密码使用bcrypt哈希存储,设备密码使用Fernet对称加密 2. **密钥保护**: 主密钥文件设置600权限,仅所有者可读写 3. **审计日志**: 所有操作记录完整日志,便于追溯 4. **会话管理**: 支持自动锁定,防止未授权访问 ## 故障排除 ### 串口无法连接 - 检查设备驱动是否正确安装 - 确认串口未被其他程序占用 - 尝试更换USB端口 ### SSH连接失败 - 确认设备IP地址正确 - 检查网络连通性 - 验证用户名密码 ### 数据库错误 - 检查data目录写入权限 - 删除损坏的数据库文件重新初始化 ## 版本历史 ### v1.0.0 (2024-01) - 初始版本发布 - 支持完整的12步测试流程 - 用户管理和审计日志 - 测试报告生成 ## 许可证 MIT License ## 联系方式 如有问题或建议,请联系开发团队。