要塞マシンの複数のマシンで同じgrepコマンドを実行しています。 grepの結果に加えて、対応するIPアドレスも印刷したいと思います。
ssh [email protected] sudo grep -A 2 hi /home/abc.txt
ssh [email protected] sudo grep -A 2 hi /home/abc.txt
私は試した:
ssh [email protected] "sudo grep -A 2 hi /home/abc.txt && hostname"
ssh [email protected] "sudo grep -A 2 hi /home/abc.txt && hostname"
ただし、1.5.3.9
最後にはシステムのホスト名が一度だけ印刷されます。
最良のアプローチは何ですか?
答え1
いいですね。すでにIPアドレスがあるので使用できます。
for host in 1.5.4.7 1.5.3.9; do
ssh core@$host "sudo grep -A 2 hi /home/abc.txt" && \
printf "%s\n" "$host"
done
hostname
質問のサンプルコードのように実行すると出力されます。CPU名、いいえIPアドレスあなたはあなたが欲しいものを言います。
&&
区切りコマンドを使用すると、後続コマンドの終了コードが0の場合にのみ後続コマンドが実行されます。grep
一致するものがない場合、0 は返されず、2 番目のコマンドは実行されません。
また、特定のユースケースをよく理解していませんが、一般的にホストにデモンストレーションするためにこのようなタスクを実行するのは簡単です。今後代わりにホストで実行される出力後ろにprintf
ただし、ステートメントを移動する(または必要に応じてステートメントを代わりに使用する)ほど簡単ですecho "$host"
。