zoukankan      html  css  js  c++  java
  • 流量监控脚本

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

    把改脚本定时到晚上执行

     1 #!/bin/sh
     2 nic='em1'
     3 myFile=$nic'monitor'
     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
    ",$1 *1024)}'`
    15         elif [ "$MB"x = "MB"x ];then
    16             z=`echo $NUM | awk '{printf ("%.2f
    ",$1 *1024*1024)}'`
    17         elif [ "$MB"x = "GB"x ];then
    18             z=`echo $NUM | awk '{printf ("%.2f
    ",$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
    ",$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
    ",$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 }'

  • 相关阅读:
    Linux下Fortran多文件编译
    java用poi实现对word读取和修改操作
    SQL DATEDIFF语法及时间函数 Sql 查询当天、本周、本月记录
    深入Java集合学习系列:LinkedHashSet的实现原理
    Log4Net日志
    程序员创业如何才能成功?
    Asp.net 数据采集基类(远程抓取,分解,保存,匹配)
    response.setContentType()的String参数及对应类型
    深入Java集合学习系列:LinkedHashMap的实现原理
    深入Java集合学习系列:HashSet的实现原理
  • 原文地址:https://www.cnblogs.com/cainiaoit/p/8580388.html
Copyright © 2011-2022 走看看