サーバーのリストがあります。
cat list.txt
10.10.10.10 servera
10.11.10.10 serverb
SSH経由でログインできることをどのように確認できますか?デフォルトでは、SSH鍵認証を介してログインできる必要があることを意味します。簡単に言えば、list.txtの行(サーバー)を次のようにソートするソリューションが必要です。
- SSHキーを介してログインできるサーバー
- サーバーからパスワードを求めるメッセージ(もちろん、パスワードは不明です。)
- 接続できないサーバー
ベストアンサー1
BatchMode
このオプションは解析出力と組み合わせて使用できます。 (ssh
何らかの理由で接続ができない場合は常に255が返されますので、戻りコードを利用して失敗の種類を区別することはできません。)
開いたときにBatchMode
パスワードプロンプトやその他の対話が試みられないため、パスワードが必要な接続は失敗します。 (また、ConnectTimeout
あなたのニーズに合わせて調整する必要があるファイル名をそこに入れました。そして本当に間違ったファイル名を選択しました。)
#! /bin/bash
rm good no_auth other
while read ip host ; do
status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 $ip echo ok 2>&1)
case $status in
ok) echo $ip $host >> good ;;
*"Permission denied"*) echo $ip $host $status >> no_auth ;;
*) echo $ip $host $status >> other ;;
esac
done < list.txt
より詳細な分類が必要な場合は、他の種類のエラー(サーバーの公開鍵の欠落など)を検出できます。並べ替えられた単一のファイルに結果が必要な場合は、cat
さまざまな出力ファイルをまとめて保存できます。