Linux监测某一时刻对外的IP连接情况

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/bash
basedir="/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
原文:https://blog.csdn.net/twt326/article/details/81454171
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/seaship/article/details/89138940