Jenkins SSH shell在执行远程命令之前关闭

我在“Execute shell”下面有一个Jenkins作业:

ssh jenkins@172.31.12.58
pwd

我想让Jenkins服务器通过SSH连接到远程服务器,然后在远程服务器上运行一个命令。

相反,Jenkins连接到远程服务器,立即断开连接,然后在本地运行pwd命令,如输出中所示:

Started by user Johanan Lieberman
Building in workspace /var/lib/jenkins/jobs/Test Github build/workspace
[workspace] $ /bin/sh -xe /tmp/hudson266272646442487328.sh
+ ssh jenkins@172.31.12.58
Pseudo-terminal will not be allocated because stdin is not a terminal.
+ pwd
/var/lib/jenkins/jobs/Test Github build/workspace
Finished: SUCCESS

编辑 :任何想法为什么在ssh命令之后的后续命令不在SSH shell中运行,而是在本地运行?


如果您没有以交互方式运行,SSH不会创建交互式会话(因此您会看到“伪终端”错误消息),所以它与在交互式终端中执行一系列命令不完全相同。

要通过SSH会话运行特定命令,请使用:

ssh jenkins@YOUR_IP 'uname -a'

必须将远程命令正确引用为ssh命令的单个参数。 或者对简单的多行脚本使用bash here-doc语法:

ssh jenkins@YOUR_IP <<EOF
pwd
uname -a
EOF

我认为你可以使用通过SSH发布的插件来使用SSH在从站上执行命令:

在这里输入图像描述

如果源文件字段是强制性的,也许您可​​以传输虚拟文件。

更新:另一个解决方案是使用SSH插件。 也许这是一个比其他插件更好的解决方案:)

链接地址: http://www.djcxy.com/p/25319.html

上一篇: Jenkins SSH shell closes before executing remote commands

下一篇: Using git over ssh won't pick up private key