15

スクリプトで次のコマンドを実行して、sshの既知のホストにホストを追加します。

VAR2=$(expect -c '
 spawn ssh -o StrictHostKeyChecking=no '"$REMOTE_HOST_USER@$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にあるかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

39

試す:ssh-keygen -F <hostname>

known_hostsホスト名のフィンガープリントが見つかり、コマンドが を返した場合は行が表示されます。0それ以外の場合は何も表示されず、コマンドは を返します1

于 2012-08-27T06:20:54.630 に答える
3

ssh-keygen(1)のマニュアルページによると

-F hostname know_hostsファイルで指定されたホスト名を検索し、見つかったオカレンスを一覧表示します。このオプションは、ハッシュされたホスト名またはアドレスを検索するのに役立ちます。また、-Hオプションと組み合わせて使用​​して、見つかったキーをハッシュ形式で出力することもできます。

于 2012-08-27T09:33:25.343 に答える