Skip to main content

batchrun-usage

batchRun工具自身的安装、配置、使用说明,包括batch_run CLI批量执行、GUI功能、主机管理、数据采集等全部功能

Datos de origen

Repositorio
bytedance/batchRun
Última actividad en el origen
25 de agosto de 2026 a las 02:26
Idioma detectado de SKILL.md
chino
Estrellas
28
Forks
9

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
batchrun_usage
description
batchRun工具自身的安装、配置、使用说明,包括batch_run CLI批量执行、GUI功能、主机管理、数据采集等全部功能
version
1.0.0
tags
["batchrun","batch_run","批量执行","批量操作","批量运行","远程执行","远程命令","并行执行","并行操作","ssh批量","主机列表","主机分组","host.list","分组","采集","sample","网络扫描","network_scan","资产","asset","密码","save_password","怎么用batch","如何batch","主机清单","安装部署","配置文件","ai","AI助手","集群分析","cluster_analysis","安全分析","[Truncated]"]
# batchRun 工具使用手册 ## 一、项目简介 batchRun 是一款 HPC 系统批量操作、资产管理和信息采集工具,支持命令行和 GUI 两种模式。核心能力: - **批量执行**:通过 SSH 在大量远程主机上并行执行命令 - **资产管理**:管理主机清单、分组、硬件信息 - **数据采集**:定期采集主机状态、网络拓扑、队列信息 - **安全分析**:集群安全审计和风险评估 --- ## 二、CLI 批量执行(batch_run) ### 2.1 命令格式 ```bash batch_run [选项] ``` ### 2.2 参数说明 | 参数 | 说明 | 示例 | |------|------|------| | `-H, --hosts` | 指定目标主机(IP/主机名/文件) | `-H 10.151.1.1 10.151.1.2` | | `-G, --groups` | 指定主机分组 | `-G GPU_SERVER ALL` | | `-L, --list` | 仅列出匹配的主机,不执行命令 | `-G ALL -L` | | `-u, --user` | 指定 SSH 登录用户(默认当前用户) | `-u root` | | `-p, --password` | 指定 SSH 密码(不推荐明文;写入历史时已脱敏为 `***`,但执行期间仍可被 `ps` 看到,建议改用 `BATCH_RUN_PASSWORD` 环境变量或 `save_password`) | | | `-c, --command` | 要执行的命令 | `-c 'uptime'` | | `-P, --parallel` | 并行度:1=串行,n=n路并行(≤ config.max_parallel,默认512;`-P 0` 不允许) | `-P 128` | | `-t, --timeout` | SSH 超时秒数(串行默认10s,并行默认20s) | `-t 30` | | `-l, --output_message_level` | 输出级别(0-4) | `-l 1` | | `-o, --output_file` | 输出到文件(HOST会被替换为主机IP) | `-o /tmp/out/HOST` | | `-g, --gui` | 启动 GUI 模式 | | ### 2.3 主机指定方式 ```bash # 直接指定 IP batch_run -H 10.151.1.1 10.151.1.2 -c 'uptime' # 指定 IP:端口 batch_run -H 10.151.1.1:2222 -c 'uptime' # 排除某主机(波浪线前缀) batch_run -H ALL ~10.151.1.1 -c 'uptime' # 从文件读取主机列表 batch_run -H /path/to/host_file -c 'uptime' # 指定分组 batch_run -G GPU_SERVER -c 'nvidia-smi' # ALL 表示全部主机/分组 batch_run -H ALL -c 'hostname' batch_run -G ALL -c 'hostname' # 排除分组 batch_run -G ALL ~TEST_GROUP -c 'uptime' ``` ### 2.4 输出级别 | 级别 | 含义 | |------|------| | 0 | 仅打印主机信息(IP) | | 1 | 仅打印命令输出 | | 2 | 打印主机信息 + 命令输出首行 | | 3 | 打印主机信息 + 完整命令输出(默认) | | 4 | 详细模式,含 SSH 命令本身 | ### 2.5 输出到文件 使用 `-o` 将每台主机的输出分别保存到文件: ```bash # HOST 会被替换为实际的主机 IP batch_run -G ALL -P 128 -c 'df -h' -o /tmp/disk_check/HOST # 执行后每台主机有独立输出文件: # /tmp/disk_check/10.151.1.1 # /tmp/disk_check/10.151.1.2 # ... ``` ### 2.6 常用场景 ```bash # 检查所有主机负载 batch_run -G ALL -P 128 -c 'uptime' # 检查磁盘使用 batch_run -G ALL -P 128 -c 'df -h /tmp' # 查看内存状态 batch_run -G ALL -P 128 -c 'free -h' # 检查指定进程 batch_run -G ALL -P 128 -c 'ps aux | grep java | grep -v grep' # 查看系统版本 batch_run -G ALL -P 128 -c 'cat /etc/os-release' # 批量重启服务(危险操作!) batch_run -G WEB_SERVER -P 10 -c 'systemctl restart nginx' # 批量分发文件(结合 scp) batch_run -G ALL -P 128 -c 'scp user@mgmt:/path/file /local/path/' # 列出某分组的所有主机 batch_run -G GPU_SERVER -L ``` --- ## 三、主机列表(host.list) ### 3.1 格式 INI 风格,`[group]` 定义分组,每行一个主机: ```ini [GPU_SERVER] 10.151.1.1 host_name=gpu01 ssh_port=22 10.151.1.2 host_name=gpu02 [WEB_SERVER] 10.151.2.1 host_name=web01 10.151.2.2 host_name=web02 [ALL] # 支持引用其他分组 sub_groups = GPU_SERVER WEB_SERVER ``` ### 3.2 特殊语法 - `host_name=xxx`:指定主机名 - `ssh_port=xxx`:指定 SSH 端口(非22时必填) - `sub_groups = G1 G2`:包含子分组 - `exclude_hosts = ip1 ip2`:排除主机 - `exclude_groups = G1`:排除子分组 - 支持通配符 `*` 匹配分组名 --- ## 四、GUI 模式(batch_run_gui) ### 4.1 启动 ```bash batch_run_gui # 或 batch_run -g ``` ### 4.2 标签页 | 标签页 | 功能 | |--------|------| | NETWORK | 网络拓扑:zone/network/IP 树 + 矢量拓扑图 | | ASSET | 资产管理:设备信息表格 | | HOST | 主机管理:分组树 + 多维筛选 + 详情表格 | | STAT | 状态趋势:host_stat 历史曲线(负载/CPU/内存/swap/tmp) | | RUN | 批量执行:选择主机 + 输入命令 + 实时输出 | | LOG | 命令历史:查看历史执行记录 | ### 4.3 菜单功能 | 菜单 | 功能 | |------|------| | File | 导出表格、退出 | | Setup | 选择数据源目录 | | Tool | 更新 host.list、网络扫描、采集主机信息/状态/队列 | | AI | AI 助手对话、集群分析报告、安全分析报告 | --- ## 五、数据采集工具 ### 5.1 网络扫描(network_scan) 扫描 IP 网段,发现活跃主机: ```bash # 扫描所有配置的网段 network_scan --alive # 结果保存到 db/network_scan/network_scan.json ``` ### 5.2 主机信息采集(sample_host_info) 采集 OS、CPU、内存等静态信息: ```bash sample_host_info --groups ALL # 结果保存到 db/host_info/host_info.json ``` ### 5.3 主机状态采集(sample_host_stat) 采集运行时状态(负载、CPU利用率、内存、swap、tmp): ```bash sample_host_stat --groups ALL # 结果保存到 db/host_stat/YYYYMMDD/HHMMSS/host_stat.json ``` ### 5.4 队列信息采集(sample_host_queue) 采集 LSF/openlava 调度器队列映射: ```bash sample_host_queue --groups ALL # 结果保存到 db/host_queue/host_queue.json ``` --- ## 六、密码管理 ### 6.1 保存密码 ```bash save_password # 交互式输入密码(不回显),加密保存到 db/password/<user> ``` 密码解析优先级:`-p/--password` 参数 → `BATCH_RUN_PASSWORD` 环境变量 → 交互式输入。推荐用后两者,避免密码留在命令行历史/`ps` 中。 - 密码以 Fernet 加密(AES-128-CBC + HMAC-SHA256)保存,master key 独立存放于 `db/password/.master_key`。 - 密码文件与 master key 文件权限 `0o600`,密码目录权限 `0o700`,仅属主可读写。 - 写入采用原子重命名;旧版本密码条目仍可读取(兼容迁移)。 密码保存后,`batch_run` 和 GUI 可免密执行 SSH(自动读取加密密码)。也可以临时通过环境变量提供密码(优先级高于加密存储): ```bash BATCH_RUN_PASSWORD='***' batch_run -G ALL -c 'uptime' ``` ### 6.2 切换用户 ```bash batch_run -u other_user -c 'whoami' ``` --- ## 七、安装与配置 ### 7.1 安装 ```bash python3 install.py ``` 安装脚本会: 1. 检查 Python 版本(要求 3.12+) 2. 生成 shell 包装脚本(bin/batch_run, bin/batch_run_gui, tools/*) 3. 生成默认配置文件 config/config.py ### 7.2 配置文件(config/config.py) | 变量 | 说明 | |------|------| | `host_list` | 主机清单文件路径 | | `db_path` | 数据库根目录 | | `default_ssh_command` | SSH 命令模板,默认 `StrictHostKeyChecking=accept-new` | | `serial_timeout` | 串行模式超时(秒) | | `parallel_timeout` | 并行模式超时(秒),默认 20 | | `illegal_command_list` | 禁止执行的命令列表(字面精确匹配,另内置破坏性命令模式拦截) | | `log_retention_days` | 日志保留天数 | | `ai_api_base_url` | AI API 地址 | | `ai_api_key` | AI API 密钥 | | `ai_model_name` | AI 模型名称 | | `ai_dangerous_commands` | AI 执行前需确认的危险命令列表(另会检测命令替换/编码垫片/解释器 -c 等绕过构造) | --- ## 八、AI 助手中使用 batch_run 在 AI 对话中,你可以通过 `run_command` 工具调用 `batch_run` 命令来批量操作远程主机。 ### 8.1 重要规则 1. **batch_run 的完整路径**:`$BATCH_RUN_INSTALL_PATH/bin/batch_run` 2. **并行执行**:对多台主机操作务必加 `-P 128`(或更大),否则串行执行非常慢 3. **超时设置**:远程命令执行时间长时需加 `-t 30` 或更大值 4. **输出级别**:如果只需要结果数据,使用 `-l 1`(仅命令输出)便于解析 5. **输出到文件**:大量主机时用 `-o /tmp/result/HOST` 收集结果,再逐一读取分析 ### 8.2 典型调用模式 ```bash # 查看所有主机负载(实时) $BATCH_RUN_INSTALL_PATH/bin/batch_run -G ALL -P 128 -t 20 -l 3 -c 'uptime' # 检查磁盘空间不足的主机 $BATCH_RUN_INSTALL_PATH/bin/batch_run -G ALL -P 128 -t 20 -l 1 -c 'df -h / /tmp | tail -n +2' # 查找特定进程 $BATCH_RUN_INSTALL_PATH/bin/batch_run -G ALL -P 128 -t 20 -l 3 -c 'ps aux | grep -v grep | grep java' # 检查服务状态 $BATCH_RUN_INSTALL_PATH/bin/batch_run -G WEB_SERVER -P 128 -t 20 -l 3 -c 'systemctl is-active nginx' # 输出到文件后分析 $BATCH_RUN_INSTALL_PATH/bin/batch_run -G ALL -P 128 -t 30 -l 1 -c 'cat /etc/os-release' -o /tmp/os_info/HOST # 然后读取 /tmp/os_info/ 下各文件进行分析 # 列出指定分组的主机 $BATCH_RUN_INSTALL_PATH/bin/batch_run -G GPU_SERVER -L ``` ### 8.3 注意事项 - 命令中包含单引号时需要转义或用双引号包裹 - 命令中包含管道符 `|` 时需要用引号将整个命令括起来 - `batch_run` 会自动使用已保存的加密密码进行 SSH 认证 - 如果某台主机 SSH 超时或失败,不影响其他主机的执行 - 使用 `-o` 输出文件时,HOST 占位符会被替换为主机 IP --- ## 九、常见问题 ### Q: batch_run 连接超时? - 检查目标主机是否可达(ping) - 检查 SSH 端口是否正确(host.list 中 ssh_port 配置) - 增大 `-t` 超时值 - 确认密码已保存(`save_password`) ### Q: 如何查看有哪些分组? - GUI 的 HOST 标签页左侧树形列表 - 或直接查看 host.list 文件中的 `[group]` 段 ### Q: 如何添加新主机? - 编辑 host.list 文件,在对应分组下添加行 - 或使用 `switch_etc_hosts` 工具从 /etc/hosts 自动转换 ### Q: 并行数设多少合适? - 一般 128 即可覆盖大部分场景 - 并行度上限为 `config.max_parallel`(默认 512),`-P 0`(无限并行)已被禁止 - 串行(默认 -P 1)适合需要逐一确认的场景 ### Q: 输出太多看不过来? - 使用 `-l 2` 只看每台主机的首行输出 - 使用 `-o` 导出到文件后用 grep 筛选 - 在命令中加 `| grep xxx` 过滤
Ver en GitHub