本文共 1157 字,大约阅读时间需要 3 分钟。
netstat -untp |sed ‘1,2 d’|cut -d’:’ --output-delimiter=’ ’ -f1,2,3,4|awk ‘{print $9":"$10"|"$2"|"$3"|"$5"|"$7,$1,$4,$6}’|sort|uniq -c -f1 |sort -nr | cut -d’|’ --output-delimiter=’ ’ -f1,2,3,4,5,6,7,8,9|awk ‘{print $1,$3,$4,$7,$8":"$5,$9":"$6,$2}’
分解:
netstat -untp //输出网络信息sed '1,2 d'//去掉一二行cut -d':' --output-delimiter=' ' -f1,2,3,4//按:切开并用空格分开,主要是为了把端口号分离出来以免统计重复行时因为端口号不一样产生影响awk '{print $9":"$10"|"$2"|"$3"|"$5"|"$7,$1,$4,$6}'//把一些会影响重复行判断的因素组成一列sort//排序uniq -c -f1//判断复复行,忽略第一列,这就是上面为什么要把组合列放在第一列的原因了sort -nr//再次排序cut -d'|' --output-delimiter=' ' -f1,2,3,4,5,6,7,8,9//把之前的第一列再拆开awk '{print $1,$3,$4,$7,$8":"$5,$9":"$6,$2}'//重新组合输出内容
如果有发生特别需要监控的情况,可以设定自动任务,按监控密度自已定义秒级别或分钟级别,以下代码存为.sh文件:
#!/bin/bashbasedir="/home/testdir/";mkdir $basedir;datedir=$(date +%y%m%d);mkdir "$basedir$datedir";fname=$(date +%H%M%S);netstat -untp |sed '1,2 d'|cut -d':' --output-delimiter=' ' -f1,2,3,4|awk '{print $9":"$10"|"$2"|"$3"|"$5"|"$7,$1,$4,$6}'|sort|uniq -c -f1 |sort -nr | cut -d'|' --output-delimiter=' ' -f1,2,3,4,5,6,7,8,9|awk '{print $1,$3,$4,$7,$8":"$5,$9":"$6,$2}' > $basedir$datedir/$fname.log //水平有限,以上代码请自己优化
作者:死胖子
来源:CSDN 原文: 版权声明:本文为博主原创文章,转载请附上博文链接!