通过SSH执行远程脚本

在远端输出一条消息和一个变量,核对远端路径与执行结果。

适用场景与读者

适合已完成快速入门、需要将该场景用于业务流程的配置人员。

开始前准备

先阅读教程公共准备。本页预计时间不含外部服务安装;命令中的资源、路径和端口按自己的演练环境填写。

资源 要求
SSH环境 专属Linux SSH主机、受限账号、空演练目录和经独立核实的主机指纹。
解释器 远端/bin/sh;Python变体仅在远端已安装对应解释器时使用。

配置一览

界面字段 / 配置项 本例填写值
执行方式 SSH
脚本引擎 / 工作目录 SHELL / 本次远端专属目录
脚本 使用下方SHELL代码块

操作步骤

1. 建立SSH资源

资源 → SSH 资源,填写自己的主机、端口、受限账号和已核实的主机密钥。使用私钥认证时,“私钥”(技术字段 privateKey)填写执行 Worker 能读取的私钥文件路径,不是粘贴 PEM 内容,也不是远程主机上的路径;私钥口令单独填写。API 与 Worker 分开部署时,连接测试所在 API 节点也需要能读取该路径。先限制文件访问权限,再测试连接;脚本与日志中不放认证材料。

2. 配置远程任务

新建 SCRIPT,执行方式选 SSH 并选择该资源,引擎选 SHELL,工作目录填写远程专属目录的绝对路径。SHELL 没有可填写的“解释器”字段;远程主机应提供 /bin/sh。重试次数与间隔均为 0,超时 60 秒,脚本如下:

echo hello-remote
echo __VAR__:remoteRows=3
printf '3\n' > remote-result.txt
exit 0

保存发布。__VAR__: 后的值按字符串处理;这里的输出是字符串 "3",不是数值3。

3. 执行并核对输出

使用ADMIN会话查看实例日志中的hello-remote、输出变量 remoteRows(字符串 "3")及领取任务的Worker。变量值在脚本日志中会脱敏,实际值在输出变量中查看。

工作目录在 SSH 主机上,不在浏览器机器或 Windows Worker 本机。检查该目录的 remote-result.txt,应只有一行 3;重复运行会覆盖这个样例文件。

4. 分别演练失败条件

新建同配置、不同名称的脚本任务,把退出码改为 7,运行应为 FAILED。另建 SSH 资源填写不匹配的主机密钥,连接测试应拒绝;不要关闭校验来绕过。错误解释器路径只适用于下面的 PYTHON 配置;SHELL 不提供这个字段。无权限工作目录属于另一种失败条件,需要按自己的远程权限单独检查。

5. 使用远程 Python

新增任务,仍选择 SSH 和同一资源,将引擎改为 PYTHON。“Python 解释器”填写远端已安装的解释器命令或绝对路径,例如 /usr/bin/python3;工作目录仍是远端目录,重试 0、超时 60 秒。

print("hello-remote-python")
print("__VAR__:remoteRows=3")

保存执行后应为 SUCCESS,日志含 hello-remote-python,输出 remoteRows 仍为字符串 "3"。

预期结果

检查项 预期值
消息与变量 日志含hello-remote;remoteRows为字符串"3"
退出码 7 FAILED,不能因 SSH 连接建立成功而判成功
远端文件 remote-result.txt 内容为一行 3
Python 任务 SUCCESS;remoteRows 为字符串 "3"
不匹配主机密钥 连接测试被拒绝,不进入脚本执行

常见失败

现象 处理方法
平台已超时,远端仍运行 关闭SSH连接不保证终止远端进程。远端任务需要自己的期限、取消和幂等机制,另行检查远端进程。

安全与清理

清理本教程新建文件与失败副本;若有长任务,先在远端确认其退出。

适用版本与限制

适用 iJob 1.0.0。示例环境为 Windows Worker 通过私钥连接 Linux SSH 主机,覆盖 SHELL 与 PYTHON 成功、退出码 7 失败、主机密钥不匹配拒绝,以及远端文件内容核对。密码认证、跳板机和任意远程长进程的停止效果不在本页确认范围内;平台停止不代表远端事务回滚。

下图来自本教程实际运行:

SSH 脚本日志:hello-remote 与退出码 0

相关页面

文档版本 1.0.0。命令中的示例路径、资源和端口需替换为自己的环境。