查看Apache的连接数和当前的连接数以及IP访问次数,以下脚本可实现:
#!/bin/bash
#writen by zhuxiaowei
#date:2015.10.19
#about "watch clients IP "
###########################################
con_num=`netstat -ant | grep $ip:80 | wc -l` # connections numbers
con_now=`netstat -ant | grep $ip:80 | grep EST | wc -l ` #connections numbers now
all_ip=`netstat -nat|grep ":80"|awk ‘{print $5}‘ |awk -F: ‘{print $1}‘ | sort| uniq -c|sort -rn|head -n10` # ALL IP AND visit number
echo "连接数为:$con_num"
echo "----------------------------------"
echo "当前连接数为:$con_now"
echo "----------------------------------"
echo "IP访问记录及数次(top 10):$all_ip"
echo "----------------------------------"
echo "说明:
SYN_RECV 表示正在等待处理的请求数;
ESTABLISHED 表示正常数据传输状态;
TIME_WAIT 表示处理完毕,等待超时结束的请求数;
FIN_WAIT1 表示server端主动要求关闭tcp连接;
FIN_WAIT2 表示客户端中断连接;
LAST_ACK 关闭一个TCP连接需要从两个方向上分别进行关闭,双方都是通过发送FIN来表示单方向数据的关闭,当通信双方发送了最后一个FIN的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(Fin的Ack确认)后才真正关闭整个TCP连接;"
echo "----------------------------------"
watch -n 2 "netstat -n | awk ‘/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}‘"