【发布时间】:2016-12-12 10:14:15
【问题描述】:
我正在寻找在 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),我在日志中看到的唯一信息是第一个回显“正在运行 ssh 命令”,它只是退出脚本。
有人可以指出我做错了什么或更好的方法来捕获远程 ssh 命令的退出状态。 感谢任何帮助。
【问题讨论】:
-
你在用
set -e吗? -
啊,是的。这可能是导致问题的原因。 @chepner 感谢您指出这一点。完全错过了