bash - Capture exit code from remote ssh command

六眼飞鱼酱① 提交于 2021-02-10 23:18:32

问题


I'm looking at capturing the exit status of a remote ssh command within a shell script I have a shell script as follows :

function rSSH {
   local x
   echo "Running ssh command"
   x=$(ssh -o StrictHostKeyChecking=no -i $keyPair -o ProxyCommand="ssh -W %h:%p -i $keyPair user@$bastionIP 22" user@$IP "$cmd")

   x=$?
   echo "SSH status is : $x"
   if [ $x -eq 0 ];then
      echo "Success"

   else
      echo "Failure"
      exit 1
   fi
}

rSSH
exit 0

When I execute the above script as a background job with an invalid $bastionIP( testing failure scenario), it results with an exit code of 0 ( instead of 1) and the only information I see in the logs is the first echo "Running ssh command" and it just exits the script.

Can someone point out what I'm doing wrong or a better way to capture the exit status of the remote ssh command. Appreciate any help.


回答1:


The script appears to be running under set -e, which means when the ssh connection fails, the script exits immediately.




回答2:


Faced the same issue. I had to execute a bunch of commands over a remote ssh connection as below and the script will terminate before the 'echo'ing the 'return here='.

ssh -v -T -i ${KEY} -p${PORT} -tt ${USER}@${IP} /bin/bash -c "'
echo "Inside Script"
exit 12
'"
echo "return here=$?"

Thanks to the response of @chepner in the original post, it was the same issue that I was using set -e

Removing it helped to resolve.




回答3:


Try using another variable for return code.

function rSSH {
   local x
   echo "Running ssh command"
   x=$(ssh -o StrictHostKeyChecking=no -i $keyPair -o ProxyCommand="ssh -W %h:%p -i $keyPair user@$bastionIP 22" user@$IP "$cmd")

   local ret_code
   ret_code=$?
   echo "SSH status is : $ret_code"
   if [ $ret_code -eq 0 ];then
      echo "Success"

   else
      echo "Failure"
      exit 1
   fi
}

rSSH
exit 0


来源:https://stackoverflow.com/questions/38798676/bash-capture-exit-code-from-remote-ssh-command

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!