2016年11月10日木曜日

while ループの Here Document で ssh を使うと1回しかループしない


以下のようにして、複数のサーバにコマンドを実行しようとすると1回しかループしない。

while read ip
do
    ssh user@${ip} 'cat /etc/hosts'
done<<END
10.1.0.11
10.1.0.12
10.1.0.13
END

これは、ssh を実行することで 標準入力が切り替わることが影響しているらしい。

以下のように -n をつけると、3回ループして、期待どおりに動いた。

while read ip
do
    ssh -n user@${ip} 'cat /etc/hosts'
done<<END
10.1.0.11
10.1.0.12
10.1.0.13
END