日常操作
本页介绍主机编辑、连接诊断和日常操作。CLI 帮助默认使用英语。
使用自定义清单时,每条命令都需指定相同的 --config PATH。
交互式添加与编辑
在终端中运行 npx fleetsh add hk1,程序会询问缺少的地址、用户或密钥路径,
再进行隐藏的密码输入。新增主机默认使用 SSH 密码认证,也可以完整指定参数。
npx fleetsh edit hk1 打开菜单,可修改地址、用户、本地保存的密码、分组、
标签、备注或认证方式。取消不会保存。分组和标签输入会替换列表,空输入会清空。
脚本和 --json 模式必须提供修改参数,不会弹出菜单。
npx fleetsh edit hk1
npx fleetsh edit hk1 --save-password
npx fleetsh edit hk1 --add-groups production
npx fleetsh show hk1
修改密码只替换本地保存值,不会修改服务器密码。保存成功会明确显示主机名。
排查连接问题
npx fleetsh doctor hk1
npx fleetsh doctor hk1 --connect-timeout 30s --json
报告显示清单路径、实际代理/跳板路线、本地认证准备、网络连接、主机密钥、
SSH 认证及远程健康检查。诊断不会修改配置或自动信任新密钥。
遇到未知密钥,应独立核对指纹,再用 fleetsh ssh hk1 明确接受。
错误会说明问题并给出下一步命令。JSON 保留结构化检查项和现有退出码含义。
保存错密码时,执行 fleetsh edit hk1 --save-password。
持续查看资源占用
npx fleetsh stats '@all' --table
npx fleetsh stats '@all' --watch 5s
npx fleetsh stats '@web' --watch 5s --json
表格显示主机状态、CPU、内存、swap、当前用户及根文件系统空余。
每轮显示时间戳;其他磁盘仍可通过普通 stats 输出查看。一台失败不会隐藏其他主机。
间隔至少一秒,从上一轮结束后开始计算,探测不会重叠。Ctrl+C 停止。
JSON 持续输出每行一份报告,包含 timestamp、results、summary。
配置和凭据在启动时加载,修改后需重启监控命令。无需安装远程代理。
保存常用命令
在清单中加入:
[commands.disk]
command = "df -h"
timeout = "30s"
[commands.docker-update]
command = "docker compose pull && docker compose up -d"
sudo = true
timeout = "10m"
fleetsh run '@web' docker-update --dry-run
fleetsh run '@web' docker-update --parallel 2
fleetsh run hk1 disk --json
选择器与命令名必填。--sudo、--timeout 可覆盖保存的默认值。
预览不会连接服务器,命令不会自动重试。不要在命令定义中保存密码或 token。
开启自动补全
先安装二进制,或运行 npm install -g fleetsh,使 fleetsh 位于 PATH。
支持 bash、zsh、fish、powershell。
fleetsh completion powershell > fleetsh-completion.ps1
. ./fleetsh-completion.ps1
需要每次启动生效时,在 PowerShell profile 中加入使用绝对路径的点加载语句。
Bash 可加载生成的脚本;Zsh 将 _fleetsh 放入 fpath 并初始化 compinit;
Fish 将脚本放入 ~/.config/fish/completions/fleetsh.fish。
补全只读取本地主机、分组及命令名,不读取秘密值或连接服务器。
受支持入口是 fleetsh 命令;npx fleetsh 的补全取决于 shell。
检查重启需求与分批重启
fleetsh update '@all' --sudo --check-reboot
fleetsh reboot-required '@all'
fleetsh reboot '@web' --sudo --batch-size 2 --wait-timeout 5m
Debian/Ubuntu 检查 reboot-required 标记,其他系统在安装后可使用
needs-restarting -r。不支持或无法检查时明确显示“未知”。更新不会自动重启。
整批的新启动标识与健康检查通过后才开始下一批。上一批失败会停止后续重启,
未执行主机显示跳过。仍需确认,自动化可明确指定 --yes。
批大小与同时执行的 worker 数量分别控制。
导入 OpenSSH 配置与导出主机信息
fleetsh import ~/.ssh/config --dry-run
fleetsh import ~/.ssh/config --user ubuntu
fleetsh export --format toml --output inventory.toml
fleetsh export --format json
fleetsh export --format ssh-config --output ssh-config
导入支持明确的别名、通配符默认值、HostName、User、Port、
单个 IdentityFile 与单个跳板别名 ProxyJump,遵循 OpenSSH 首个匹配值优先。
没有用户设置时需指定 --user USER。同名主机会停止导入,已有主机不会被覆盖。
Include、Match 会停止导入;依赖 ProxyCommand、多跳/地址形式的 ProxyJump
或不支持的展开变量的主机会跳过并解释。其他不支持的设置会列出,不执行本地命令。
导入主机使用密钥或 agent 认证,需要密码认证时用 edit HOST 修改。
导出不包含系统凭据值、凭据引用或常用命令定义,但会保留用户填写的备注与连接设置。
OpenSSH 输出会提示无法表达的代理 URL 与转发配置。
输出文件采用 UTF-8,已有文件需明确指定 --overwrite。
SFTP 上传与下载
fleetsh upload '@web' ./script.sh /tmp/script.sh --dry-run
fleetsh upload '@web' ./script.sh /tmp/script.sh
fleetsh download hk1 /var/log/syslog ./syslog.txt
fleetsh download '@web' /var/log/syslog ./logs
复用已有 SSH 登录、代理和主机密钥设置。只传输一个普通文件,不支持递归目录或
--sudo;上传目标目录必须存在且对 SSH 用户可写。
单机下载可指定本地文件或已有目录,多机下载使用各自的别名目录并附短哈希,
避免文件系统名称冲突。预览会显示确切路径,不创建文件。
已有目标文件需明确指定 --overwrite。中断可能留下未完成文件,重试前请检查。