netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l

쉘상태에서 위와 같이 치시면 됩니다.

=2차 수정=
생각해보니
netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l

보다는(레드햇 8.0 <- 이외에는 테스트 안해봄~)
netstat -np|grep -F httpd|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l
으로 좀더 정확한 수치를 뽑아낼 수 있습니다.

이제야 "웹서버와 통신하고있는 클라이언트 수 알아내기"가 완벽히 완성되었습니다.
=2차 수정 끝=
=수정 시작=
제가 생각을 해보니 명령어의 설명이 하나도 안들어갔군요.
netstat 은 네트워크의 상황을 나타내주는 유틸리티입니다.
옵션 -n은 재분석을 하지 않는옵션으로 빠른 결과출력 속도를 가져오죠.

grep는 정규표현식시 일치하는 줄만을 출력하는 쉘입니다.
-F옵션은 정규표현식을 사용하지 않겠다는 옵션이고.. ":80"은 netstat에서 ":80"을 포함한 줄만을 출력한다는 것이죠.. 즉. http프로토콜만을 출력하겠다는 것입니다.

egrep는 grep -E 와 같은 것으로 좀더 많은 정규표현식을 사용할 수 있습니다. 옵션은 '(ESTAB|SYN)' 으로 주었는데 이는 정규표현식으죠.. 정규표현식을 알고싶으시면 아래의 URL으로..
http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x10468.html 을 참조하세요.

awk 는 각 줄에서 공백을 기준으로 필드로 나누며 '{print $5}'는 5번째 필드만을 출력하겠다는 것입니다.

sed 는 비대화형 줄단위 편집기입니다. 정규표현식을 사용하며 's/:[0-9]*//'옵션을 분리하면 s/// 안에 :[0-9]가 들어가있는 것으로 "s/이것//" 는 각 줄에서 "이것"이라는 글자만 지운다는 것으로 정규표현식 :[0-9] 을 나눠보면 ":" 으로 시작하는 모든 숫자를 나타냅니다.
([0-9]는 모든 숫자를 가리킴)

sort는 참 유용한 쉘입니다. 말 그대로 정렬한다는 것인데
printf "1\n5\n3\n"|sort 라고 쉘에서 처보면 순서대로 1,3,5로 출력되는것을 확인할 수 있습니다.
여기서. 옵션 -u는 출력 내용이 같은 것은 한번만 출력하는것입니다.

wc 이것 또한 참 유용한 쉘이죠 ~ 단어의 수를 알아내는 것으로 한줄에 한해서만 단어의 수를 샙니다. 이를 이용해서 몇줄이 나왔는지를 알수있는데 -ㅣ 옵션을 주면 몇줄이 출력되었는지만을 나타냅니다.

전체적으로 분석을 하면
netstat -n|grep -F :80|egrep '(ESTAB|SYN)'|awk '{print $5}'|sed 's/:[0-9]*//'|sort -u|wc -l
명령은 netstat유틸을 이용해서 네트워크의 상황을 출력하고 이 중에 grep 를 이용해 :80 문자만을 나타내고있는 줄만 출력하며 egrep를 이용해 ESTAB이나 SYN이있는 줄만 출력하며 awk를 이용해 접속하고있는 클라이언트만을 표시하며 sed를 이용해 클라이언트의 포트를 제거하고 sort를 이용해서 중복된 IP를 제거하고 마지막으로 숫자만을 출력하기위해 wc를 이용한것입니다
2012/01/10 19:38 2012/01/10 19:38

Trackback Address :: https://youngsam.net/trackback/1731