我有一个脚本,它将使用 ssh 在远程节点上运行命令。远程节点是一个设备,所以我不能(鼓励不要)对其进行更改。现在我有一个这样的脚本:
ssh REMOTE-NODE -l login "ls" > output 2>&1
status=$?
Run Code Online (Sandbox Code Playgroud)
所以$status
会有ssh命令的状态。如何获取$?
远程命令的状态(在本例中为 ls,但对于调用的任何命令)?我无法在可以返回状态的远程节点上创建中间脚本。
不是ssh
像往常一样退货吗?
退出状态
ssh 以远程命令的退出状态或 255 退出(如果发生错误)。
$ ssh user@localhost 'exit 123' ; echo $?
user@localhost's password:
123
Run Code Online (Sandbox Code Playgroud)
尽管正如@thrig 在评论中所暗示的那样,如果 ssh 客户端因信号而被终止,则$?
可能会显示通常的 128+信号号而不是 255,即使它不是远程命令的退出代码。相反,在快速测试中,似乎如果远程命令由于信号而退出,则ssh
返回 255。