宝塔面板控制 (huo15-baota-control)
用宝塔 HTTP API 远程操控服务器。脚本 scripts/bt_api.py(零依赖,标准库)。
配置(凭据,不入库)
~/.huo15/baota.json:
{ "panels": [ { "name": "gjb-ssh", "desc": "...", "url": "https://gjbserver.huo15.com", "token": "<明文token>" } ] }
token= 宝塔「面板设置→API接口」里的接口密钥(明文)。多台服务器就多个 panel 对象。- 默认用第一个 panel;
--panel <name>指定某台。
常用命令
# 系统总览(CPU/内存/负载/磁盘)
python3 scripts/bt_api.py sysinfo [--panel gjb-ssh]
python3 scripts/bt_api.py disk
python3 scripts/bt_api.py network
# 网站
python3 scripts/bt_api.py sites
python3 scripts/bt_api.py site_stop --id <ID> --name <域名>
python3 scripts/bt_api.py site_start --id <ID> --name <域名>
# 数据库
python3 scripts/bt_api.py databases
# 任意接口(最万能)—— 端口/动作见 references/endpoints.md
python3 scripts/bt_api.py raw --endpoint "/crontab?action=GetCrontab" --params '{}'
python3 scripts/bt_api.py raw --endpoint "/system?action=GetTaskCount" --params '{}'
触发后的做法
- 用户提运维意图 → 选对 panel → 跑只读命令(sysinfo/sites/...)先汇报现状。
- 涉及写操作(停站/删库/改配置/续证书)→ 先确认目标,再用对应命令或
raw。 - 结果是 JSON,挑关键字段用中文转述,别把整坨 JSON 丢给用户。
重要前提 / 注意
- 宝塔有反扫描:脚本已带浏览器 UA(必需,否则返回伪装 404)。
- API 必须在面板里「开启」且把调用方 IP 加白名单;经
gjbserver.huo15.com隧道访问时宝塔看到的源 IP 是127.0.0.1(隧道 localIP),所以白名单含127.0.0.1即可远程调用。 - token 是唯一防线(隧道公网可达),务必保密;泄露即轮换(面板→重新生成 Token,或
scripts/enable_api.py重跑)。 - 任意 shell 命令宝塔 API 不直接给(安全限制)→ 需要跑命令走 SSH,不走本 skill。
详见 references/endpoints.md 与 README.md(API 鉴权原理 + 如何开启)。
