# 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` 参数值