だから私がやろうとしていることはかなり簡単なはずですが、それを見つけることができないようです。別のコンピュータで特定のプロセスを終了する必要があります。すべてのプロセスには定義された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