[英]bash - Capture exit code from remote ssh command
我正在查看在shell脚本中捕获远程ssh命令的退出状态,我有一个shell脚本,如下所示:
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
当我以无效的$ bastionIP(测试失败方案)作为后台作业执行上述脚本时,其结果是退出代码为0(而不是1),并且我在日志中看到的唯一信息是第一个回显“ Running ssh命令”,它只是退出脚本。
有人可以指出我做错了什么还是捕获远程ssh命令退出状态的更好方法。 感谢任何帮助。
该脚本似乎正在set -e
下运行,这意味着ssh
连接失败时,该脚本将立即退出。
面临同样的问题。 我必须通过远程ssh连接执行一堆命令,如下所示,脚本将在“回显”“ return here =”之前终止。
ssh -v -T -i ${KEY} -p${PORT} -tt ${USER}@${IP} /bin/bash -c "'
echo "Inside Script"
exit 12
'"
echo "return here=$?"
感谢原始帖子中@chepner的回复,这是我使用set -e
的同一问题
删除它有助于解决。
尝试使用另一个变量作为返回码。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.