- 지난 이야기
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부의 웹페이지 다운로더를 개선하는 방법입니다.