異なるコマンドの名前を使用して両方のホストでSSHコマンドを実行する

異なるコマンドの名前を使用して両方のホストでSSHコマンドを実行する

だから私がやろうとしていることはかなり簡単なはずですが、それを見つけることができないようです。別のコンピュータで特定のプロセスを終了する必要があります。すべてのプロセスには定義されたIP範囲がありますが、最終的には変更されます。

例えば、

arp |sort |awk '{print $1}'|grep 10.20.30.18 # IP's range from 180 to 189 so this does the trick

出力は次のとおりです

xxx.xxx.xxx.180
xxx.xxx.xxx.181

だから私はSSHを介して両方に接続し、次のことをしたいと思います。

ps -ef | grep X11 | grep -v grep | awk '{print $2}' | xargs kill

各プロセスにSSHを適用してからプロセスを終了せずにこの問題を解決するにはどうすればよいですか?

答え1

forループを使用できます。

HOSTS='server1.example.com server2.example.com server3.example.com'

for server in $HOSTS
do
   ssh $server "ps -ef | grep X11 | grep -v grep | awk '{print \$2}' | xargs kill"
done

または、この目的のために作成された多くのアプリの1つを使用することもできます。などclusterssh

答え2

プロセスを終了したいすべてのホストはarpキャッシュにありますか?

IPが連続的であると仮定すると、単にIPを繰り返す方が良いでしょう。

for i in {180..189}
do
 ssh -l username 10.20.30.$[i} "ps -ef | grep X11 | grep -v grep | awk '{print $2}' | xargs kill"
done

関連情報