流量监控脚本

Posted IT菜鸟园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流量监控脚本相关的知识,希望对你有一定的参考价值。

公司有台服务器每天晚上流量很高,但是不知道确定是到哪个IP的流量

把改脚本定时到晚上执行

 

 1 #!/bin/sh
 2 nic=em1
 3 myFile=$nicmonitor
 4 #iftop -P -n -N -t -B -L100 -s10 -i $nic | grep -Ev Listening| Host|Total|total | sed -e s/=>//g -e s/<=//g | grep -Ev =|- | sed -e s/ [0-9]\{1,3\} //g | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n > $nic
 5 if [ ! -f "$myFile" ];
 6 then
 7     touch $myFile
 8 fi
 9 function KMG ()
10 {
11         MB=`echo $1 |grep -Eo KB|MB|GB|B`
12         NUM=`echo $1 |sed -e s/K\|G\|M\|B//g`
13         if [ "$MB"x = "KB"x ];then
14             z=`echo $NUM | awk {printf ("%.2f\n",$1 *1024)}`
15         elif [ "$MB"x = "MB"x ];then
16             z=`echo $NUM | awk {printf ("%.2f\n",$1 *1024*1024)}`
17         elif [ "$MB"x = "GB"x ];then
18             z=`echo $NUM | awk {printf ("%.2f\n",$1 *1024*1024*1024)}`
19         else
20             z=`echo $NUM`
21         fi
22         
23         echo $z
24         
25 }
26 while true
27 do
28 
29     iftop -P -n -N -t -B -L1000 -s10 -i $nic | grep -Ev Listening| Host|Total|total | sed -e s/=>//g -e s/<=//g | grep -Ev =|- | sed -e s/ [0-9]\{1,3\} //g | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n > $nic && echo `date "+%Y-%m-%d %H:%M:%S"`
30     ip=`cat $nic | awk {print $1}`
31     for i in ${ip[@]}
32     do
33             #iftop获取到的当前值,并判断是否有冒号(没有冒号会导致将有冒号的值也会计算)
34             t=`echo $i | grep -Eo :`
35             if [ "$t"x = ":"x ];then
36                 B=`grep -w $i $nic | awk {print $5}`
37                 #echo "1" $i $B
38             else
39                 B=`grep -w $i $nic | grep -v : |awk {print $5}`
40                 #echo "2" $i $B
41             fi
42             
43             #循环当前的值
44             for flow in ${B[@]}
45             do
46                 A=`KMG $flow`
47                 
48                 #判断是否有冒号
49                 
50                 if [ "$t"x = ":"x ];then
51                     #判断是否已经存在值,不存在直接写入
52                     #echo "1" $i $A
53                     if grep -wq $i $myFile;then
54                         KMGNUM=`grep -w $i $myFile | awk {printf ("%.2f\n",$2 + A)} A="$A"`
55                         #echo 1 `grep $i $myFile`
56                         sed -i "/$i/d" $myFile && echo $i $KMGNUM >> $myFile
57                         #echo 2 `grep $i $myFile`
58                         #echo $i $KMGNUM
59                         #echo "A" $i $A
60                     else
61                         echo $i $A >> $myFile #&&echo "B" $i $A
62                     fi
63                 else
64                     #判断是否已经存在值,不存在直接写入
65                     #echo "2" $i $A
66                     if grep $i $myFile | awk {print $1} | grep -v : | grep -q $i;then
67                         KMGNUM=`grep -w $i $myFile | grep -v : | awk {printf ("%.2f\n",$2 + A)} A="$A"`
68                         #echo 1 `grep $i $myFile| grep -v :`
69                         sed -i "/$i /d" $myFile && echo $i $KMGNUM >> $myFile
70                         #echo 2 `grep $i $myFile| grep -v :`
71                         #echo $i $KMGNUM
72                         #echo "A" $i $A
73                     else
74                         echo $i $A >> $myFile #&& echo "B" $i $A
75                         #echo $i $A
76                     fi
77                 fi
78             done
79         done
80 done
81 
82 

使用方法

cat *monitor | sort -t ‘ ‘ -k2.1nr | sed -n ‘1,10p‘ | awk ‘{print $1,$2 /1024/1024 }‘

以上是关于流量监控脚本的主要内容,如果未能解决你的问题,请参考以下文章

流量监控脚本

网卡流量监控脚本 ( Python )

网卡流量监控脚本 ( Shell )

基于dstat监控网卡流量,服务器状态简单脚本

LINUX下网卡流量持续监控查看shell脚本实践

求一个linux将监控网卡出入流量的shell脚本,每隔设定的时间输出到文本或其他地方存储