xargs 와 간단한 쉘 기반 멀티프로세싱 2부 ping

in shell •  7 years ago  (edited)

xargs 와 간단한 쉘 기반 멀티프로세싱 2부 ping

1부에 이어서 이번엔 ping 과 xargs 를 이용해 빠른 속도로 서버의 상태를 체크하는 방법입니다.

핑 테스트

관리하는 서버들의 상태를 알아보기 위해 192.168.1.100 ~ 192.168.1.199 까지 ping 을 보낸다고 생각해봅시다.
일단 ping의 결과를 아이피별 파일로 만들어보겠습니다. 큐는 10개, 아이피별로 5번씩 핑을 보냅니다. 사실 ping 은 한 100개 짜리 큐를 만들어서 동시에 보내도 됩니다. 자신의 머신과 네트웤 상황에 맞게 테스트해보시고 조절하세요.

seq 100 199 | xargs -I% -P10 bash -c 'ping -c5 192.168.1.% > %.txt'

일일이 파일로 만들고 다시 처리하려면 귀찮으니까 한번에 처리해봅시다. perl 을 이용하면 편한데, 여기선 좀더 간단한 명령어를 사용해 보겠습니다.

일반적인 ping 의 결과는 다음과 같습니다.

PING 192.168.1.103 (192.168.1.103): 56 data bytes
64 bytes from 192.168.1.103: icmp_seq=0 ttl=64 time=0.103 ms
64 bytes from 192.168.1.103: icmp_seq=1 ttl=64 time=0.119 ms
64 bytes from 192.168.1.103: icmp_seq=2 ttl=64 time=0.109 ms
64 bytes from 192.168.1.103: icmp_seq=3 ttl=64 time=0.080 ms
64 bytes from 192.168.1.103: icmp_seq=4 ttl=64 time=0.128 ms

--- 192.168.1.103 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.080/0.108/0.128/0.016 ms

사실 우린 끝의 3줄만 알면 됩니다. grep -A2 statistics 를 이용해서 --- 192.168.1.103 ping statistics --- 이후 2줄만 출력한후 xargs 를 이용해서 한줄로 합치겠습니다. ( xargs 가 또 나오네요. 이것도 유용한 트릭입니다. )

seq 100 199 | xargs -I% -P10 bash -c 'ping -c5 192.168.1.% | grep -A2 statistics | xargs ' | tee result.txt

결과는 다음처럼 나옵니다.

--- 192.168.1.103 ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.085/0.282/0.436/0.130 ms
--- 192.168.1.100 ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 6.855/56.180/109.259/37.225 ms
--- 192.168.1.104 ping statistics --- 5 packets transmitted, 0 packets received, 100.0% packet loss
--- 192.168.1.105 ping statistics --- 5 packets transmitted, 0 packets received, 100.0% packet loss
--- 192.168.1.106 ping statistics --- 5 packets transmitted, 0 packets received, 100.0% packet loss
--- 192.168.1.101 ping statistics --- 5 packets transmitted, 0 packets received, 100.0% packet loss

살아있는 머신이 2개 밖에 없군요. -_-;;;; 정확히 말하자면 원래 머신이 2개입니다. :)

3부에는 좀 스크립트를 만들어서 1부의 웹페이지 다운로더를 개선하는 방법입니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!