PTT/README.md

225 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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