使用 sshpass,返回代码(退出状态)因使用有效命令时未知的原因而不同

使用 sshpass,返回代码(退出状态)因使用有效命令时未知的原因而不同

这里发生了一些事情,但我认为最终,CLish 或 SSH 返回的退出代码扰乱了我的工作流程。

我正在尝试使用 sshpass 连接到远程计算机(CLish shell)。正在运行的脚本以“exit 0”退出(当我直接在本地计算机上调用它时可以工作),但返回到本地 shell 的退出代码是“255”。是的,我知道这很令人困惑,但也许一个例子会有所帮助。我想我已经将问题缩小到一个简单的例子。

连接到运行 CLish 的服务器,并通过单个命令从本地计算机拖放到 bash shell:

me@local$ sshpass -p 'password' ssh -t [email protected] 'shell'
user@server:~$ exit 0
exit
Connection to 172.16.5.4 closed.

回到我的机器上,检查退出代码:

me@local$ echo $?
255

使用 CLish 手动进入远程计算机上的 shell sshpass

me@local$ sshpass -p 'password' ssh [email protected]
CLishPrompt> shell
me@server$ exit
exit
CLishPrompt> exit
Connection to 172.16.5.4 closed.

检查我机器上的退出代码:

me@local$ echo $?
0

我确实需要在与第一个示例相同的 sshpass 调用中发出“shell”命令,因为我使用重定向将脚本写入服务器的文件系统并运行它(全部在一次调用中)。我希望它返回退出代码“0”,如第二个示例所示。我一直无法找到解决此问题的方法。我需要退出代码“0”的原因是因为该脚本在 Jenkins-CI“构建”中返回其结果,并且我不知道如何告诉 Jenkins-CI 接受退出代码 255。如果这是 bash,然后我可以自己检查退出代码并继续执行脚本的下一部分。

在这种情况下,我需要让 ssh 返回“0”或告诉詹金斯“255”是可以的。您知道这里发生了什么或有什么建议吗?

相关内容