225 lines
6.3 KiB
Markdown
225 lines
6.3 KiB
Markdown
# 采集箱出厂测试工具
|
||
|
||
## 项目简介
|
||
|
||
这是一个用于自动化测试和配置采集箱设备的桌面应用程序。通过串口和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
|
||
|
||
## 联系方式
|
||
|
||
如有问题或建议,请联系开发团队。
|