2012-08-27 9 views
10

私のスクリプトでは、sshの既知のホストにホストを追加する次のコマンドを使用しています。ホストがknown_host sshにあるかどうかを確認する方法

VAR2=$(expect -c ' 
spawn ssh -o StrictHostKeyChecking=no '"[email protected]$REMOTE_HOST_IP"' 
expect "*?assword:*" 
send "'"$REMOTE_HOST_PASSWD"'\r" 
expect { 
"Permission denied, please try again." { 
exit '"$WRONG_PASSWORD"' 
} 
} 
') 

が正常に動作しますが、私はそれがknown_hostsファイルにすでに存在する場合は、コマンドを実行するホストがknown_hostsファイルにすでに存在する場合は、コマンドの前に制御しないようにする必要があります。ホストがknown_hostsにあるかどうかを確認するにはどうすればよいですか?

答えて

24

試してみてください。ssh-keygen -F <hostname>

known_hostsライン(s)は、ホスト名の指紋が発見された場合、コマンドが戻る0、そうでない場合は何も示されていないと、コマンドが返す1が表示されます。

+0

これは何もしないか、画面に何も印刷しないように見えます。奇妙な。 –

+0

@VinceKronleinあなたのホスト名に一致するものが見つからない場合に起こるはずです。完全一致のみが返されました。 – complex857

+0

それは私の悪かった。私は単にホスト名だけを使用していませんでした:google.com、私はgitのホストを使用してgitのrepoの鍵を探していました:[email protected] ... 。 –

1

見つかった出来事をリストknown_hostsファイルで指定されたホスト名、ため

-Fホスト名検索のssh-keygenは(1)のmanページによります。このオプションは、ハッシュされたキーをハッシュ形式で出力するために、 のホスト名またはアドレスを検索するのに便利で、 -Hオプションと組み合わせて使用​​することもできます。

関連する問題