Bash For Loop - IP 範囲とパスワードの入力を求めるメッセージ

Bash For Loop - IP 範囲とパスワードの入力を求めるメッセージ

同じパスワードが設定されている複数のサーバーのコンテンツを確認する単純な1行のforループがあります。私はこのライナーをIPアドレスを介してサーバークラスタにログインし、パスワードの入力を求め、コマンドを実行するスクリプトとして開発したいと思います。たとえば、サービスを再起動します。これが私が使用するものです:

    for i in {1..253}
do sshpass -p PASSWORDHERE ssh -o StrictHostKeyChecking=no [email protected].${i} 'hostname
echo "Checking if foo.log exists: `ls -lh /var/log/foo.log | wc -l`"
echo "Checking if bar.log is present: `ls -lh /var/log/bar.log | wc -l`"
' 2>/dev/null; echo ""; done

私のスクリプトが弱いので、どこから始めるべきかわかりません。ところで、私は基本的なツールセットを使ってこれを達成したいと思います。サードパーティをインストールできません。

助けてくれてありがとう。

ベストアンサー1

for i in {1..253}
do 
    ip=192.168.1.${i}
    echo "Enter password for: $ip"
    read pswd
    case "$pswd" in
        *) password=$pswd;;
    esac
    sshpass -p "$password" ssh -o StrictHostKeyChecking=no username@$ip 'hostname
    echo "Checking if foo.log exists: `ls -lh /var/log/foo.log | wc -l`"
    echo "Checking if bar.log is present: `ls -lh /var/log/bar.log | wc -l`"
    ' 2>/dev/null
done

それでは効果があるでしょう。テスト中にループの実行に疲れたり、より小さい範囲(たとえば1〜5)を使用してデバッグする場合は、Ctrl + Cを押すとループが終了します。

おすすめ記事