awk 查看ip连接数(常见应用一)

处理文本,是awk的强项了。 无论性能已经速度都是让人惊叹!

[chengmo@localhost ~]$ awk 'BEGIN{
    while("netstat -an"|getline){
        if( $5 ~ /[1-255]/)
        {
            split($5,t1,":");
            tarr[t1[1]]++;
        }
    }
    for(k in tarr)
        {
            print k,tarr[k] | "sort -r -n -k2";
        }
};'

$5是netstat –an 第5个字段。默认就是对方连接ip以及端口。

[chengmo@localhost ~]$ time awk 'BEGIN{while("netstat -an"|getline){if( $5 ~ /[1-255]/){split($5,t1,":");tarr[t1[1]]++;}}for(k in tarr){print k,tarr[k] | "sort -r -n -k2";}};'  
211.151.33.14 28
113.65.21.200 14
121.32.89.106 13
 
real    0m1.149s
user    0m0.032s
sys     0m1.055s

查询访问最频繁的IP

awk '{print $1}' access-2020-04-06.log | sort | uniq -c | sort -n -k 1 -r | more

其他需求

如根据访问IP统计UV

awk '{print $1}'  access-2020-04-06.log | sort | uniq -c | wc -l
cat  netstat.txt 
Proto Recv-Q Send-Q Local-Address          Foreign-Address             State
tcp        0 0 0.0.0.0:3306           0.0.0.0:* LISTEN
tcp        1 1 0.0.0.0:80             0.0.0.0:* LISTEN
tcp        0 0 127.0.0.1:9000         0.0.0.0:* LISTEN
tcp        0 0 yuedu.com:80        124.205.5.146:18245         TIME_WAIT
tcp        0 0 yuedu.com:80        61.140.101.185:37538        FIN_WAIT2
tcp        0 0 yuedu.com:80        110.194.134.189:1032        ESTABLISHED
tcp        0 0 yuedu.com:80        123.169.124.111:49809       ESTABLISHED
tcp        0 0 yuedu.com:80        116.234.127.77:11502        FIN_WAIT2
tcp        0 0 yuedu.com:80        123.169.124.111:49829       ESTABLISHED
tcp        0 0 yuedu.com:80        183.60.215.36:36970         TIME_WAIT
tcp        0 4166 yuedu.com:80        61.148.242.38:30901         ESTABLISHED
tcp        0 1 yuedu.com:80        124.152.181.209:26825       FIN_WAIT1
tcp        0 0 yuedu.com:80        110.194.134.189:4796        ESTABLISHED
tcp        0 0 yuedu.com:80        183.60.212.163:51082        TIME_WAIT
tcp        0 1 yuedu.com:80        208.115.113.92:50601        LAST_ACK
tcp        0 0 yuedu.com:80        123.169.124.111:49840       ESTABLISHED
tcp        0 0 yuedu.com:80        117.136.20.85:50025         FIN_WAIT2
tcp        0 0 :::22                  :::* LISTEN

上小菜(基础条件匹配):

查询所有tcp中,接受队列非0的网络包。

$ awk '$1 =="tcp" && $2 > 0' netstat.txt
tcp 1      1 0.0.0.0:80    0.0.0.0:*    LISTEN

打印出来的内容,我们不知所云。如果把第一行打出来,就一目了然了。这时候我们要用到awk的全局常量(如果想知道AWK的全局常量,我们可以往下看,附录,我把常用的罗列出来了)NR。

$ awk 'NR==1 || $1 =="tcp" && $2 > 0' netstat.txt
Proto Recv-Q Send-Q Local-Address Foreign-Address State
tcp 1      1 0.0.0.0:80       0.0.0.0:*   LISTEN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值