seq 1 10 | while read a ; do
ssh HOST echo $a
done
のようにゃ処理は結構やってた気がするんだが、これにsudoを追加して
seq 1 10 | while read a ; do
ssh HOST sudo echo $a
done
にすると、にゃぜか1しか表示されにゃい。
かにゃり悩んで連打してたら希に3だの9だのまで表示されることがある。にゃんじゃこりゃ・・・結果が確率的に変化するとか何が起きてるんだ!?
というわけで頼りににゃるIRCに投げてみたらsshの仕様らしい。sudoがにゃくても再現する場合もあるとか。
ssh HOST echo $a 0</dev/null
にすればOKらしい。これは罠すぎるだろう。
で、man ssh読んでみるとssh -nがこれ相当らしいのだが、manだけ読んでても気づかにゃいよこんにゃの。
てことでsudoとは関係にゃく、
seq 1 10 | while read a ; do
ssh HOST echo $a
done
のようにゃ処理は
seq 1 10 | while read a ; do
ssh -n HOST echo $a
done
としにゃければ意図通り動かにゃい、ということで、メモ。
尚、
ssh -n HOST echo $a <<EOF
moemoe
EOF
といったヒアドキュメントやその他リダイレクトと併用してるとこんどはssh -nのおかげで動かにゃくにゃるわけで、にゃんかのライブラリににゃってたりするルーチンは状況をよく見てfixしておかにゃいとエンバグする。
あと今回の要件であれば、
seq 1 10 | while read a ; do
echo "$a" | while read b ; do
ssh HOST echo $b
done
done
のようにダミーのwhileを噛ますとまともに動くようだが、偶然動いてる可能性は捨てきれにゃいので本件は要お勉強ということで。