Skip to content

Latest commit

 

History

History
131 lines (88 loc) · 3.1 KB

File metadata and controls

131 lines (88 loc) · 3.1 KB

sshc 部署常用示例

本文记录常见部署任务的 sshc 命令组合。示例主机统一使用 devhost

检查主机

sshc run devhost -- hostname
sshc run devhost -- uptime
sshc run devhost -- "pwd && whoami"

上传部署包

上传单个文件并校验 sha256:

sshc scp -l tmp/pkg.tar.gz -r /tmp/pkg.tar.gz devhost --sha256

上传构建目录,上传前清理远端目录:

sshc scp -l ./dist -r /opt/app/dist devhost --remove-dir

上传多个 jar 文件:

sshc scp -l "./dist/*.jar" -r /opt/app/lib devhost

解压和准备目录

sshc run devhost -- "mkdir -p /opt/app && tar -xzf /tmp/pkg.tar.gz -C /opt/app"

如需在目标目录下执行命令:

sshc run devhost --cwd /opt/app -- "ls -lah && ./bin/app --version"

使用脚本部署

复杂部署逻辑建议放在本地脚本中,再通过 --script 上传执行,避免多层 shell 转义。 多行 shell、here-doc、source 激活虚拟环境、复杂引号拼接等场景优先使用 --script

sshc run devhost --script ./scripts/deploy.sh --cwd /opt/app

例如复杂检查脚本可以直接本地保存后远端执行:

sshc run devhost --script ./scripts/check-service.sh --cwd /opt/app --timeout 60s

调试脚本时保留远端临时脚本:

sshc run devhost --script ./scripts/deploy.sh --keep-remote-script

如果远端 /tmp 有 noexec、权限或清理策略限制,可以指定远端临时脚本目录:

sshc run devhost --script ./scripts/deploy.sh --remote-script-dir /opt/app/tmp

sudo 和执行用户

需要 root 权限时:

sshc run devhost --sudo -- systemctl restart app.service

切换到应用用户执行:

sshc run devhost --sudo-user app --cwd /opt/app -- ./bin/app migrate
sshc run devhost --script ./scripts/migrate.sh --sudo-user app --remote-script-dir /opt/app/tmp

--sudo--sudo-user 需要远端支持免密 sudo,或当前 SSH 用户已经是 root。 使用 --script --sudo-user 时,远端临时脚本会设置为本机远端用户可读;脚本包含敏感内容时,建议配合 --remote-script-dir 使用权限受控的目录。

超时控制

给远端命令设置超时,并在超时后等待 30 秒再强制清理:

sshc run devhost --timeout 600s --kill-after 30s -- ./scripts/upgrade.sh

远端主机需要提供 timeout 命令,一般来自 coreutils。

查看服务状态

sshc run devhost -- "systemctl status app.service --no-pager"
sshc run devhost -- "systemctl is-active app.service"

查看日志

sshc run devhost -- "journalctl -u app.service --no-pager -n 100"
sshc run devhost -- "tail -n 100 /var/log/app/app.log"

健康检查

sshc run devhost -- "curl -fsS http://127.0.0.1:18080/health"

下载远端日志

sshc download -r /var/log/app/app.log -l tmp/app.log devhost --sha256
sshc download -r /var/log/my-app/app.log -l tmp/logs/ devhost --sha256

下载整个日志目录:

sshc dl -r /var/log/app -l tmp/app-logs devhost