如何获得$?通过 ssh 运行命令

如何获得$?通过 ssh 运行命令

我有一个脚本,它将使用 ssh 在远程节点上运行命令。远程节点是一个设备,因此我无法(不鼓励)对其进行更改。现在我有一个这样的脚本:

  ssh REMOTE-NODE -l login "ls" > output 2>&1

  status=$?

这样$status就会有 ssh 命令的状态。如何获取$?远程命令的状态(本例中为 ls,但对于任何调用的命令)?我无法在远程节点上创建可以返回状态的中间脚本。

答案1

ssh照常退货吗?

退出状态
ssh 以远程命令的退出状态退出,如果发生错误,则以 255 退出。

$ ssh user@localhost 'exit 123' ; echo $?
user@localhost's password: 
123

不过正如@thrig在评论中暗示的那样,如果由于信号而终止ssh客户端,$?则可能会显示通常的128+信号数字而不是255,即使它不是远程命令的退出代码。相反,在快速测试中,似乎如果远程命令由于信号而退出,则ssh返回255。

相关内容