免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3402 | 回复: 12
打印 上一主题 下一主题

求急分析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-17 15:38 |只看该作者 |倒序浏览
10可用积分
Wed Jun 17 14:23:06 2009; ******** IP traffic monitor started ********
Wed Jun 17 14:23:06 2009; ICMP; eth1; 56 bytes; from 61.130.125.69 to 192.168.1.246; time excd
Wed Jun 17 14:23:06 2009; TCP; eth1; 1307 bytes; from 124.115.5.237:443 to 192.168.1.14:2347; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 92 bytes; from 192.168.1.1:65422 to 192.168.1.30:2971; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 46 bytes; from 192.168.1.30:2971 to 192.168.1.1:65422; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 46 bytes; from 192.168.1.232:1040 to 61.172.207.163:80; first packet
Wed Jun 17 14:23:06 2009; UDP; eth1; 46 bytes; from 192.168.1.143:3870 to 202.153.195.43:2436
Wed Jun 17 14:23:06 2009; UDP; eth1; 44 bytes; from 202.153.195.43:2436 to 192.168.1.143:3870
Wed Jun 17 14:23:06 2009; TCP; eth1; 46 bytes; from 192.168.1.239:2304 to 210.5.159.138:6666; first packet
Wed Jun 17 14:23:06 2009; UDP; eth1; 47 bytes; from 218.108.29.22:4518 to 192.168.1.119:4822
Wed Jun 17 14:23:06 2009; TCP; eth1; 46 bytes; from 192.168.1.14:2347 to 124.115.5.237:443; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 186 bytes; from 122.224.215.38:8601 to 192.168.1.248:1329; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 40 bytes; from 220.181.100.18:80 to 192.168.1.246:13965; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 40 bytes; from 220.181.100.19:80 to 192.168.1.246:13961; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 40 bytes; from 220.181.100.17:80 to 192.168.1.246:13969; first packet
Wed Jun 17 14:23:06 2009; TCP; eth1; 106 bytes; from 210.5.159.138:6666 to 192.168.1.239:2304; first packet
Wed Jun 17 14:23:06 2009; UDP; eth1; 36 bytes; from 122.225.36.41:2004 to 192.168.1.160:20995
Wed Jun 17 14:23:06 2009; ICMP; eth1; 60 bytes; from 192.168.1.30 to 61.164.42.17; echo req
Wed Jun 17 14:23:06 2009; ICMP; eth1; 60 bytes; from 61.164.42.17 to 192.168.1.30; echo rply
Wed Jun 17 14:23:06 2009; UDP; eth1; 57 bytes; from 113.132.213.156:41211 to 192.168.1.243:15000
Wed Jun 17 14:23:06 2009; UDP; eth1; 959 bytes; from 192.168.1.243:15000 to 113.132.213.156:41211
Wed Jun 17 14:23:06 2009; UDP; eth1; 173 bytes; from 192.168.1.243:15000 to 113.132.213.156:41211
Wed Jun 17 14:23:06 2009; UDP; eth1; 57 bytes; from 113.132.213.156:41211 to 192.168.1.243:15000
Wed Jun 17 14:23:06 2009; UDP; eth1; 575 bytes; from 192.168.1.243:15000 to 113.132.213.156:41211
。。。。

以上是一段iptraf记录下来的日志,现在想要实现的要求:
1. 按UDP,TCP,ICMP分类
2. 各分类中,统计出去的前3个数据量最大的,进入的前3个流量最大的。

表现形式:
TCP: IN
1  x.x.x.x  ? bytes
2  x.x.x.x  ? bytes
3  x.x.x.x  ? bytes

TCP: OUT
1  y.y.y.y  ? bytes
2  y.y.y.y  ? bytes
3  y.y.y.y  ? bytes

UDP: IN
....


我现在也是有办法做,但是我是先把ICMP,UDP,TCP分别匹配出来存入不同的文件中,然后再统计流量,想请教各位大大有没有更精炼,更省性能的脚本,让小弟领悟一下

最佳答案

论坛徽章:
0
2 [报告]
发表于 2009-06-17 15:38 |只看该作者

  1. awk '/\*/{next} {if($11!~/^192/) f="IN"; else if($13!~/^192/) f="OUT"; else next; gsub("(:[^ ]*)?(;)?",""); t=$6":"f" "$11; a[t]+=$8} END{for(i in a) print i,a[i]}' URLOGFILE | sort -k3nr | awk '{a[$1]++; if(a[$1]<4) b[$1]=b[$1]"\n"a[$1]" "$2" "$3" bytes"} END{for(i in b) print i""b[i]"\n"}'
复制代码

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2009-06-17 15:48 |只看该作者

回复 #1 geminis 的帖子

IN 和 OUT 怎么区分的?

论坛徽章:
0
4 [报告]
发表于 2009-06-17 16:01 |只看该作者
IP to 外网IP --> OUT

外网IP to IP  --> IN

论坛徽章:
0
5 [报告]
发表于 2009-06-17 16:24 |只看该作者
写的啰嗦,抢楼先……

  1. sort -k8nr URLOGFILE | awk '!/\*/{gsub(":.*","",$11); gsub("(:.*)?(;)?","",$13); if($11~/^192/) f="OUT"; else f="IN"; gsub(";","",$6); t=$6":"f; if(s[t]<3) a[t]=a[t]"\n"s[t]+1" "(f=="IN"?$11:$13)" "$8" bytes"; s[t]++} END{for(i in a) printf("%s%s\n\n",i,a[i])}'
复制代码

[ 本帖最后由 kwokcn 于 2009-6-17 16:25 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-06-17 16:34 |只看该作者

回复 #4 kwokcn 的帖子

可能是我没有说清楚,不过,大侠的水平已经让我震了一下。

要求是要把同一源IP的进出和出去的流量 相加 起来统计,所以,sort -k8nr 这个排序不行

论坛徽章:
0
7 [报告]
发表于 2009-06-17 16:36 |只看该作者

回复 #5 geminis 的帖子

哦,这样哈~

除了这个还忽略了一个问题:内网IP -> 内网IP,这种是不是不做计算?

论坛徽章:
0
8 [报告]
发表于 2009-06-17 16:38 |只看该作者

回复 #6 kwokcn 的帖子

是的,同意,内网到内网可以不计算

论坛徽章:
0
9 [报告]
发表于 2009-06-17 16:53 |只看该作者
得遍历完才能给出结果,再加个数组计算也行,不过我觉得更麻烦,还不如sort一下第一步的结果。你先看看效率吧。

  1. awk '/\*/{next} {if($11!~/^192/) {f="IN";n=11} else if($13!~/^192/) {f="OUT";n=13} else next; gsub("(:[^ ]*)?(;)?",""); t=$6":"f" "$n; a[t]+=$8} END{for(i in a) print i,a[i]}' URLOGFILE | sort -k3nr | awk '{a[$1]++; if(a[$1]<4) b[$1]=b[$1]"\n"a[$1]" "$2" "$3} END{for(i in b) print i""b[i]"\n"}'
复制代码

论坛徽章:
0
10 [报告]
发表于 2009-06-17 17:09 |只看该作者

回复 #8 kwokcn 的帖子

所以的OUT统计要以内网地址为统计依据,如

TCP:OUT
1  192.168.1.30    ? bytes
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP