怎么拿到美元?从通过 ssh 运行的命令

Sca*_*ger 3 ssh ksh

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

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

  status=$?
Run Code Online (Sandbox Code Playgroud)

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

ilk*_*chu 5

不是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。