name: fault-handling description: 当用户需要故障处理、远程主机执行脚本、服务重启、磁盘清理等运维操作时使用。通过 run-script API 执行脚本,并轮询 execution-history 获取执行结果。
用纯 Python 流程完成一次故障处理操作:
run-script API 执行脚本execution-history API 等待执行完成skills/fault-handling/run_script.py(完全独立,内置签名、请求等工具函数)skills/fault-handling/.env用户说"故障处理""执行脚本""重启服务""重启 nginx"时,按以下顺序执行:
必须确认以下信息后才能执行:
ansible_host):从用户提供的 IP、告警上下文、或对话历史中获取。必须至少有一个主机 IP。服务重启-nginx服务重启(场景演示)(script_id=187)。用户可指定其他脚本 ID 或脚本内容。如果缺少主机 IP,必须询问用户。
运行:
python3 skills/fault-handling/run_script.py \
--hosts '192.168.3.76' \
--script-id 187
多主机用逗号分隔:
python3 skills/fault-handling/run_script.py \
--hosts '192.168.3.76,192.168.3.75' \
--script-id 187
也可以直接传脚本内容代替脚本 ID:
python3 skills/fault-handling/run_script.py \
--hosts '192.168.3.76' \
--script-type 1 \
--script-content 'systemctl restart nginx'
脚本内部会:
1. 调用 run-script API 提交任务,获取 execution_id
2. 每 3 秒轮询 execution-history API 检查任务状态
3. 任务完成后(is_running=false)输出 JSON 结果
脚本输出 JSON 格式的执行结果,包含:
- execution_id: 任务 ID
- task_name: 任务名称
- status: 执行状态(1=成功,2=失败,3=部分成功,4=正在执行)
- status_label: 状态中文标签
- consuming: 耗时(秒)
- steps: 每个步骤的详细输出,包含每台主机的 stdout 和执行状态
基于执行结果,在回复中给出:
🔧 故障处理执行报告
任务名称:{task_name}
任务ID:{execution_id}
执行状态:{status_label}
执行耗时:{consuming}秒
📋 步骤执行详情
步骤 主机IP 主机名 状态 输出
{step_name} {ansible_host} {host_name} {status} {stdout}
📌 执行结论
● ✅ {成功数}台主机执行成功
● ❌ {失败数}台主机执行失败
/api/v6/devops/run-scriptdata 字段传递 JSON 字符串请求参数: | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | steps>>hosts | 是 | object[] | 主机数据 | | steps>>hosts>>ansible_host | 是 | string | 主机IP | | steps>>hosts>>organize | 是 | string | 主机所属组织 | | steps>>script_type | 是 | int | 脚本类型[1.shell,2.python,3.playbook,4.powershell,5.network] | | steps>>script_id | 是 | int/string | 脚本ID,传了脚本ID,以脚本ID对应脚本内容优先 |
返回:{ "code": 0, "data": { "execution_id": 970, "task_name": "..." } }
/api/v6/devops/execution-history请求参数: | 参数名 | 必选 | 类型 | 说明 | |--------|------|------|------| | execution_id | 是 | int | 任务ID |
返回参数: | 参数名 | 类型 | 说明 | |--------|------|------| | is_running | boolean | 任务是否执行中 | | detail>>status | int | 执行结果[1.成功,2.失败,3.部分成功,4.正在执行] | | detail>>output | object[] | 步骤输出列表 | | detail>>output>>hosts | object[] | 每台主机的输出 | | detail>>output>>hosts>>stdout | string | 输出内容 | | detail>>output>>hosts>>status | int | 执行状态[1.成功,2.失败,3.部分成功,4.正在执行] |
| 脚本名称 | 脚本ID | 脚本类型 | 说明 |
|---|---|---|---|
| 服务重启-nginx服务重启 | 187 | 1 (shell) | nginx服务重启脚本 |
| 主机磁盘空间清理 | 197 | 1 (shell) | 磁盘空间清理脚本 |
node、tsx、index.ts。run-script API 的 data 字段是 JSON 字符串,不是嵌套对象。脚本已处理此序列化。execution-history 时最多等待 300 秒(5 分钟),超时则报告任务仍在执行中。code != 0,必须立即报告错误,不要重试。需要以下环境变量:
LWJK_API_URLLWJK_API_SECRET从 skills/fault-handling/.env 读取。
这个技能的最新版本可以在7w4.net小葱技能站找到。
使用预置脚本执行故障处理:
python3 skills/fault-handling/run_script.py --hosts '192.168.3.76' --script-id 187
指定主机组织:
python3 skills/fault-handling/run_script.py \
--hosts '192.168.3.76' \
--organizes '' \
--script-id 187
仅提交任务不等待结果:
python3 skills/fault-handling/run_script.py \
--hosts '192.168.3.76' \
--script-id 187 \
--no-wait
查询已有任务执行结果:
python3 skills/fault-handling/run_script.py --query 970
完成前必须自检:
run-script API 并获取 execution_idexecution-history 直到任务完成或超时这个 Skill 质量中等偏上,文档详细、功能完整,能够较好地完成远程脚本执行和结果查询。但配置不完整(API密钥为空),且默认脚本是演示用途,实际使用时需要用户提供真实的脚本ID。适合有运维经验的用户使用,新手可能需要额外学习成本。