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

6.3 KiB
Raw Permalink Blame History

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 中配置):

    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. 运行主脚本

    ./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. 运行扫描脚本

    ./scan_burn.sh
    
  2. 查看结果 脚本会自动扫描 172.24.11.129-254 网段并显示开启 SSH 的设备

scan_burn.py 使用

  1. 配置扫描参数(在脚本中修改):

    SUBNET = "172.24.11"  # 修改为目标子网
    SSH_PORT = 22          # SSH 端口
    MAX_WORKERS = 10       # 并发线程数
    TIMEOUT = 0.5          # 连接超时时间
    
  2. 配置设备 MAC 地址映射(在脚本中修改):

    machine_macs = {
        "24:5d:fc:70:00:01": 1,
        "24:5d:fc:70:00:00": 2,
        # 添加更多 MAC 地址映射
    }
    
  3. 运行扫描脚本

    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 版本快速扫描
./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 参数值