그래서 제가 하려는 일은 상당히 간단해야 하는데, 그걸 알아낼 수 없는 것 같습니다. 다른 컴퓨터에서 특정 프로세스를 종료해야 합니다. 모든 프로세스에는 정의된 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
또는 이 목적으로 만들어진 많은 앱 중 하나를 사용할 수도 있습니다. 등등 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