열린 포트당 연결수 구하는 쉘스크립트 페이지 정보 작성자 MintState 댓글 0건 조회 14,439회 작성일 08-11-05 13:01 본문 열린 포트당 연결수 구하는 쉘스크립트 http://kltp.kldp.org/stories.php?story=04/02/23/1278181 #!/bin/bash # 포트당 연결수 구하는 쉘스크립트 # TIME_WAIT도 연결로 계산 KeepAlive Off ^^ # DATE : 20040223 # MAIL : bando(at)bando.org # MSN : bando(at)bando.org # IP_ADDR에 현재 서버의 아이피를 저장한다. # . /etc/sysconfig/network-scripts/ifcfg-eth0 이렇게 include해서 IPADDR로 써도 된다. IP_ADDR=$(awk -F'[=]' '/IPADDR/ {print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0) # PORT에 현재 열린 포트들을 정렬해 저장한다. PORT=$(netstat -ln|awk '/^tcp/{print $4}'|awk -F: '{print $2}'|sort -n -u) # PORT_LINE에 위에 저장한 PORT들의 총 라인수를 저장한다. PORT_LINE=$(wc -l<< EOF ${PORT} EOF) # PORT_LINE에 저장된 인수중 한번이상 반복 되는 스페이스를 모두 지운다. PORT_LINE=$(sed 's/ \{1,\}//' << EOF ${PORT_LINE} EOF) #printf "OPEN PORT : " for ((KILL=1; KILL <=${PORT_LINE} ; KILL++)) do # PORT_ONE에 PORT에 저장된 값중 라인이 KILL인 수를 저장한다. PORT_ONE=$(sed -n ${KILL}p << EOF ${PORT} EOF ) #printf "%d " $PORT_ONE done #echo " : TOTAL = $PORT_LINE" printf "\n+-------+---------------+\n" printf "| PORT\t| CONNECT COUNT\t|" printf "\n+-------+---------------+\n" #전체 배열의 개수는 이걸로 ${#PORT[@]} 알수 있지만 여기선 뉴라인으로 구분되기에 배열로 못쓸껄요! 아니면 갈쳐주세요! for ((KILL=1; KILL <=${PORT_LINE} ; KILL++)) do PORT_ONE=$(sed -n ${KILL}p << EOF ${PORT} EOF ) # NOW_NUM에 현재 PORT_ONE에 접속한 연결수를 저장한다. 반복되는 아이피는 하나로 처리하고 그라인수를 구하고 하나이상 반복되는 스페이스는 모두 없앤다. NOW_NUM=$(netstat -an|awk "/${IP_ADDR}:${PORT_ONE}/ {print \$5}"|awk -F: '{print $1}'|sort -u|wc -l|sed 's/ \{1,\}//') printf "| %d\t| \t%d\t|\n" $PORT_ONE $NOW_NUM let "T_CON+=NOW_NUM"; done printf "+-------+---------------+\n" printf "| $PORT_LINE\t| \t$T_CON\t|\n" printf "+-------+---------------+\n\n" exit 0; 목록 댓글목록 댓글목록 등록된 댓글이 없습니다.