2017-01-26 11 views
0

SSH接続が成功したことを確認しようとしています(スクリプトの実行中)。SSHは常にコード0で終了します。接続が成功したかどうかを確認する方法は?

私はhereからの回答を使用しようとしていますが、失敗した接続が、私は無効sshさまざまなコマンドを試してみましたが、それらはすべて0リターンコードを返す0

$ ssh -q [email protected] exit 
$ echo $? 
0 

のエラーコードを返します。失敗を確認するのが難しくなります。

私は間違ったことをしているに違いないと感じていますが、うまくいかないと思います。私が多分変更した設定がありますか?

私は、次のSSHバージョンで、CentOSの7を実行しています:

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

あなたは、例えば、[OK] 2エコー 'sshの-o BATCHMODE = yesの-oのconnecttimeout = 5のユーザ@ホストを実行している、他の回答を試してみました>&1 '?ログインに成功すると 'ok 'になります。 – Inian

+0

'ssh -q user @ downhost exit'なぜこのコマンドが失敗すると思いますか?他の質問では、「ダウンホスト」はその時点でアクセスできないホストを表すことになっていることを理解していますか? – Kenster

+0

@Inian、私はおそらく、その答え(おそらくサブシェルで動いていますか?)から一緒に何かをハックする可能性がありますが、これを '' if''文の条件にしたいので、リターンコードが見えるように見えました。 –

答えて

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 
+1

私はそれがあなたにとってうまくいくかどうか疑問です。私はあなたが 'can_connect_ssh'から' return'キーワードを省略することを意図したと思います。 – chepner

関連する問題