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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章