我有一个脚本,它将使用 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。