work_script/sso/README.md
Ching L ac1fc4421a feat(sso): add network scanning and device identification tools
- Add scan_burn.sh: fast parallel SSH port scanner for subnet 172.24.11.129-254
- Add scan_burn.py: device identification tool with MAC address mapping
- Update README.md with comprehensive documentation for new tools
- Add usage examples, configuration guide, and troubleshooting section
- Support multi-threaded concurrent scanning with configurable parameters
2026-01-07 18:14:42 +08:00

208 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SSO 交互式脚本工具
这是一个用于远程执行 SSO (Single Sign-On) 相关管理任务的交互式脚本工具集。
## 文件说明
- `run_sso_script.sh` - 主要执行脚本,负责将 Python 脚本上传到远程服务器并执行
- `sso_script.py` - Django 交互式管理脚本,提供 SSO 系统的各种管理功能
- `scan_burn.sh` - 网络扫描工具,快速扫描指定子网段中开启 SSH 服务的设备
- `scan_burn.py` - 设备识别工具,扫描网络并通过 MAC 地址识别设备编号
## 功能概述
### run_sso_script.sh 功能
- 自动将本地 Python 脚本上传到远程 Proxmox 容器
- 建立交互式 SSH 连接执行脚本
- 自动清理远程临时文件
- 支持脚本执行过程中的用户交互
### sso_script.py 功能
该脚本提供以下三个主要管理功能:
1. **创建 XDP Ultra Redeem Code**
- 生成指定数量的兑换码
- 用于 XDP Ultra 产品的许可证激活
2. **批次绑定商品**
- 将序列号批次与商品进行绑定
- 支持批量操作以提高效率
3. **批次更新商品**
- 更新已绑定序列号的商品信息
- 支持批量修改商品绑定关系
### scan_burn.sh 功能
- 快速扫描指定子网段172.24.11.129-254中开启 SSH 服务的设备
- 使用多线程并行扫描,提高扫描效率
- 显示扫描耗时和发现的 SSH 服务器列表
### scan_burn.py 功能
- 扫描网络中开启 SSH 服务的设备
- 通过 SSH 连接获取设备的 MAC 地址
- 根据 MAC 地址识别设备编号
- 支持自定义子网段、并发数、超时时间
- 显示设备编号、IP 地址和 MAC 地址的对应关系
## 使用方法
### 环境配置
在使用前需要确保:
1. **远程服务器配置**(在 `run_sso_script.sh` 中配置):
```bash
REMOTE_USER="root"
REMOTE_SERVER="172.24.9.97"
```
2. **本地环境**
- 确保可以通过 SSH 连接到远程服务器
- 远程服务器上存在包含 "celery" 名称的 Proxmox 容器
3. **网络扫描工具依赖**
- `scan_burn.py` 需要 Python 3 和 paramiko 库:`pip install paramiko`
- `scan_burn.sh` 需要 bash 环境支持
### SSO 管理工具使用步骤
1. **运行主脚本**
```bash
./run_sso_script.sh
```
2. **选择功能**
脚本启动后会显示交互式菜单:
```
==================================================
SSO 交互式脚本
==================================================
请选择要执行的功能:
1. 创建 XDP Ultra Redeem Code
2. 批次绑定商品
3. 批次更新商品
0. 退出
==================================================
```
3. **按提示输入参数**
- **功能1**:输入要生成的兑换码数量
- **功能2**输入商品ID、批次ID、开始流水号、结束流水号
- **功能3**输入新商品ID、批次ID、开始流水号、结束流水号
### 网络扫描工具使用步骤
#### scan_burn.sh 使用
1. **运行扫描脚本**
```bash
./scan_burn.sh
```
2. **查看结果**
脚本会自动扫描 172.24.11.129-254 网段并显示开启 SSH 的设备
#### scan_burn.py 使用
1. **配置扫描参数**(在脚本中修改):
```python
SUBNET = "172.24.11" # 修改为目标子网
SSH_PORT = 22 # SSH 端口
MAX_WORKERS = 10 # 并发线程数
TIMEOUT = 0.5 # 连接超时时间
```
2. **配置设备 MAC 地址映射**(在脚本中修改):
```python
machine_macs = {
"24:5d:fc:70:00:01": 1,
"24:5d:fc:70:00:00": 2,
# 添加更多 MAC 地址映射
}
```
3. **运行扫描脚本**
```bash
python3 scan_burn.py
```
4. **查看结果**
脚本会显示设备编号、IP 地址和 MAC 地址的对应关系
### 使用示例
#### 示例1创建 50 个 XDP Ultra Redeem Code
```
请选择要执行的功能: 1
请输入要生成的数量: 50
```
#### 示例2批次绑定商品
```
请选择要执行的功能: 2
请输入商品ID (product_id): 12345
请输入批次ID (batch_id): 67890
请输入开始流水号 (start): 1001
请输入结束流水号 (stop): 1100
```
#### 示例3批次更新商品
```
请选择要执行的功能: 3
请输入新商品ID (new_product_id): 54321
请输入批次ID (batch_id): 67890
请输入开始流水号 (start): 1001
请输入结束流水号 (stop): 1100
```
#### 示例4扫描网络设备
```bash
# 使用 bash 版本快速扫描
./scan_burn.sh
# 使用 Python 版本获取详细信息
python3 scan_burn.py
```
## 技术架构
- **远程执行**:使用 SSH 和 Proxmox 容器技术
- **Django 集成**:脚本运行在 Django 环境中,可访问相关数据模型
- **数据处理**:使用 MongoDB 和 FlexEngine 进行数据操作
- **许可证管理**:集成许可证颁发和管理系统
- **网络扫描**:使用多线程并发扫描和 SSH 连接技术
- **设备识别**:基于 MAC 地址的设备识别和映射
## 注意事项
1. **权限要求**
- SSO 管理工具需要远程服务器的 root 权限
- 网络扫描工具需要目标设备的 SSH 访问权限
2. **网络连接**
- 确保与远程服务器的网络连通性
- 网络扫描工具需要在目标网络内执行
3. **数据安全**
- 操作涉及生产数据,请谨慎使用
- 网络扫描可能触发安全告警,请确保已获得授权
4. **错误处理**:脚本包含基本错误处理,如遇问题请检查输入参数
5. **清理机制**:脚本会自动清理远程临时文件,无需手动操作
6. **性能优化**
- 网络扫描工具使用多线程并发,可根据网络情况调整并发数
- 扫描大量设备时建议适当增加超时时间
## 故障排除
### SSO 管理工具
- **连接失败**:检查 SSH 配置和网络连接
- **容器未找到**:确认远程服务器上存在包含 "celery" 名称的容器
- **权限错误**:确认用户具有必要的系统权限
- **参数错误**:检查输入的 ID 和数值是否正确
### 网络扫描工具
- **扫描失败**:确认本地网络可以访问目标子网
- **SSH 连接失败**:检查用户名、密码是否正确,目标设备是否开启 SSH
- **MAC 地址识别失败**:确认 `machine_macs` 字典中包含正确的 MAC 地址映射
- **并发错误**:降低 `MAX_WORKERS` 参数值
- **超时错误**:增加 `TIMEOUT` 参数值