09 While 内でSSH

これだと、1行しか表示されない。

while read NAME HOST CMD
do
  ssh $NAME@$HOST "$CMD"
done

SSH を実行すると、標準入力がそちらに振り向けられるため、read で読んだ1行のみならず、ファイル全体が SSH に渡されてしまう。従って、SSH を実行した後はもう読める行がないので while ループは1回で終了してしまう。

これを防ぐには、ssh に -n オプションを付け、/dev/null をリダイレクトし、標準入力をリダイレクトしないようにする。

こちらだとOK

while read NAME HOST CMD
do
  ssh -n $NAME@$HOST "$CMD"
done