我的Jenkins档案里有一个步骤,像这样:
withCredentials([
file(credentialsId: 'mysrv-key', variable: 'keyfile'),
string(credentialsId: 'mysrv-host', variable: 'srvhost')
]) {
sh '''ssh -v -o StrictHostKeyChecking=no -i ${keyfile}
root@${srvhost} /bin/bash << EOF
echo "0"
grep "inexisting-text" /path/to/somefile
echo "1"
EOF'''
}
这个实验是为了看看grep
返回1是否会使sh
步骤失败,但似乎不会。“1”也会打印在输出中。
是否可以通过SSH运行多个命令,而不必运行多个ssh
命令,这样我们就不必为每个命令打开新的shell会话?
类似于运行sh
,但都封装在SSH会话中。类似于我们如何运行withCredentials
,并在该块下运行内容。
1条答案
按热度按时间41ik7eoe1#
你的问题(在你的帖子中以粗体突出显示)是:
是否可以通过SSH运行多个命令,而不必运行多个ssh命令,这样我们就不必为每个命令打开一个新的shell会话?
但在提问之前,您已经证明您已经在单个SSH会话中运行了几个命令(
grep
和echo
)如果您的目标是在
grep
命令失败时阻止进一步的命令,则必须将set -o errexit
(或set -e
)添加到EOF块中。