さまざまなIPアドレスが記載されたテキストファイルがあります。
それぞれを循環して、コマンドを発行したいと思います。
cat ips.txt | xargs -L 1 `ssh me@__IP__ echo "text" > file; reboot;`
しかし、xargs値を_[〜#〜] ip [〜#〜]_に渡す方法がわかりません。
誰かがこれをどのように達成できるか説明できますか?
これにはcat
もxargs
も必要ありません。ループ内の単純なread
で十分です。
while read -r IP;do
ssh me@$IP echo "text" > file
reboot
done < ips.txt
今後の参考のために、xargs
に必要なことは、-I
オプションを使用して実現できます。-I
の後に名前を指定すると、コマンド自体のその名前のインスタンスは、 xargs
がパイプで受け取る引数:
... | xargs -L 1 -I myip ssh me@myip 'echo "text">file;reboot'
GNU Parallelを使用すると、並列に実行できます。
parallel --slf ips.txt --nonall 'echo "text" > file; reboot;'