groovy 在同一SSH会话中运行多个SSH命令,出现第一个错误时失败/退出

mm5n2pyu  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(290)

我的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,并在该块下运行内容。

41ik7eoe

41ik7eoe1#

你的问题(在你的帖子中以粗体突出显示)是:
是否可以通过SSH运行多个命令,而不必运行多个ssh命令,这样我们就不必为每个命令打开一个新的shell会话?
但在提问之前,您已经证明您已经在单个SSH会话中运行了几个命令(grepecho
如果您的目标是在grep命令失败时阻止进一步的命令,则必须将set -o errexit(或set -e)添加到EOF块中。

相关问题