SSH总是以代码0退出。如何检查连接是否成功?

时间:2017-01-26 17:32:03

标签: ssh sh

我正在尝试检查SSH连接是否成功(运行脚本时)。

我正在尝试使用here的答案,但不成功的连接会返回错误代码0。

$ ssh -q user@downhost exit
$ echo $?
0

我尝试了各种无效的ssh命令,但它们都返回了0返回码;难以检查失败。

我觉得我必须做错事,但不能解决问题。是否有一些我可能改变的设置?

我正在使用以下SSH版本运行CentOS 7:

$ ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

1 个答案:

答案 0 :(得分:0)

我仍然对示例失败的原因感到困惑,但以下似乎对我有用。

can_connect_ssh()
{
    HOST=$1
    ssh -q -o BatchMode=yes -o ConnectTimeout=5 $HOST echo connection_success | \
       grep connection_success &> /dev/null
}

被称为:

if can_connect_ssh <hostname>; then
    echo "Successful Connection"
else
    echo "Failed Connection"
fi