网络流量监控shell脚本

网络收发包计数记录在 /proc/net/dev 文件中, 要取得流量, 只需要读取里面的内容两次, 然后相减, 再除以时间间隔即可.

#!/bin/bash

#Usage1,record in file:    netmonitor <MinKB> <Interval> <FileName>#Usage2,print on terminal: netmonitor <MinKB> <Interval>#Record the value great than 100KB, 3 second Interval:#Example1,record: netmonitor 100 3 xxx.txt#Example2,print: netmonitor 100 3

#参数说明#第一个是速度记录的下限,单位是KB,即超过多少KB才记录,0为全部记录#第二个参数是采样间隔,即隔多少秒记录一次#第三个参数是输出的文件名,为空的话就直接在终端打印

#xieqianli#2011-4-25

#同时修改下列变量可以固定参数,使用脚本时就无需参数MinKB="$1"Interval="$2"FileName="$3"NetDev="wlan0"

#检查参数完整性if [ "$Interval" == "" ];then    echo "Usage1,record in file:     netmonitor <MinKB> <Interval> <FileName>"    echo "Usage2,print on terminal:  netmonitor <MinKB> <Interval>"    echo "Record the values great than 100KB, 3 seconds Interval:"    echo "Example1,record:   netmonitor 100 3 xxx.txt"    echo "Example2,print:    netmonitor 100 3"    exit 1fi

#检查 MinKB 参数的合法性check=`echo $MinKB | grep "[^0-9]"`if [ "$check" != "" ];then    echo "$MinKB is not a number"    exit 0fi

len=${#MinKB}char1=`echo $MinKB | cut -c 1`if [ $(($len)) -gt $((1)) -a "$char1"=="0" ];then    echo "$MinKB is not a number"    exit 0fi

#检查 Interval 参数的合法性check=`echo $Interval | grep "[^0-9]"`if [ "$check" != "" ];then    echo "$Interval is not a number"    exit 0fi

len=${#Interval}char1=`echo $Interval | cut -c 1`if [ $(($len)) -gt $((1)) -a "$char1"=="0" ];then    echo "$Interval is not a number"    exit 0fi

while [ 1 ]do    #读取已接收和已发送字节数,间隔一秒    REC1=`cat /proc/net/dev | grep $NetDev | sed ‘s/:/ /‘ | tr -s " " | cut -d " " -f 3`    SEND1=`cat /proc/net/dev | grep $NetDev | sed ‘s/:/ /‘ | tr -s " " | cut -d " " -f 11`    sleep $Interval    REC2=`cat /proc/net/dev | grep $NetDev | sed ‘s/:/ /‘ | tr -s " " | cut -d " " -f 3`    SEND2=`cat /proc/net/dev | grep $NetDev | sed ‘s/:/ /‘ | tr -s " " | cut -d " " -f 11`

    if [ $((REC2)) -lt $((REC1)) ];then        exit 1    fi

    if [ $((SEND2)) -lt $((SEND1)) ];then        exit 1    fi

    RESULT_REC=$((($REC2-$REC1)/$Interval))    RESULT_SENT=$((($SEND2-$SEND1)/$Interval))

    #进行B,KB和MB的单位换算    if [ $RESULT_REC -lt $((1024)) ]; then        SPEED_REC="$RESULT_REC B "    elif [ $RESULT_REC -gt $((1024)) -a $RESULT_REC -lt $((1048576)) ]; then        SPEED_REC="$(($RESULT_REC/1024)) KB"    elif [ $RESULT_REC -gt $((1048576)) ];then        SPEED_REC="$(($RESULT_REC/1048576)) MB"    fi

    if [ $RESULT_SENT -lt $((1024)) ]; then        SPEED_SENT="$RESULT_SENT B "    elif [ $RESULT_SENT -gt $((1024)) -a $RESULT_SENT -lt $((1048576)) ]; then        SPEED_SENT="$(($RESULT_SENT/1024)) KB"    elif [ $RESULT_SENT -gt $((1048576)) ];then        SPEED_SENT="$(($RESULT_SENT/1048576)) MB"    fi

    #求时间    TIME=`date`

    #左边填充空格,把结果进行右对齐    ZERO=$((8-${#SPEED_REC}))    for (( i=0; i<$ZERO; i=i+1 ))    do        SPEED_REC=" $SPEED_REC"    done

    ZERO=$((8-${#SPEED_SENT}))    for (( i=0; i<$ZERO; i=i+1 ))    do        SPEED_SENT=" $SPEED_SENT"    done

    REC_KB="$(($RESULT_REC/1024))"    SEND_KB="$(($RESULT_SENT/1024))"

    #过滤掉小于 MinKB 的记录    if [ "$MinKB" != "0" -a $((REC_KB)) -lt $MinKB -a $((SEND_KB)) -lt $MinKB ];then        continue    fi

    #输出结果    if [ "$FileName" = "" ];then        echo "$TIME    Receive:$SPEED_REC    Send:$SPEED_SENT"    else        echo "$TIME    Receive:$SPEED_REC    Send:$SPEED_SENT" >> $FileName    fidone
时间: 2024-08-05 15:25:06

网络流量监控shell脚本的相关文章

查看linux server网络流量的shell脚本

之前写过一个查看linux服务器当前流量的小脚本,很简单,但能直观的给我们一些信息 #!/bin/sh ###统计10s内的平均流量,以Mb为单位 if [ "$1" = "" ];then    echo -e "\n      use interface_name after the script,like \"$0 eth0\"...\n"    exit -1 fi echo -e "\n      star

查看linux server网络I/0流量的shell脚本

查看linux server网络流量的shell脚本 上传下载大量文件的时候,可以使用这个脚本来实现监控! #!/bin/sh   ###统计5s内的平均流量,以Mb为单位 if [ "$1" = "" ];then    echo -e "\n      use interface_name after the script,like \"$0 eth0\"...\n"    exit -1 fi   echo -e &qu

linux系统CPU,内存,磁盘,网络流量监控脚本

前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat /proc/loadavg 从系统启动开始到当前累积时刻 4, #uptime 系统运行多长时间 5, #mpstat CPU的一些统计信息 6, # 一,linux系统CPU,内存,磁盘,网络流量监控脚本 [作者:佚名来源:不详时间:2010-7-6 [我来说两句大中小] cme.sh网络流量监

Lvs别样的自动部署监控shell脚本

Lvs别样的自动部署监控shell脚本   l 脚本功能: l 实验环境图: l 具体脚本: l 结果验证: l 参考资料: 先申明,本文现在已经在我公司的测试环境和生产测试环境使用.正式环境请用keepalived+lvs. 安装ipvsadm不多说了,先说说脚本的功能,脚本分为redirect server 端和realserver 端,脚本分别为 lvs_redirector.sh 和realserver.sh脚本.另外加一个监控脚本lvs_monitor.sh(此脚本来源网友,做了一点修

MySQL主从复制监控shell脚本

########本脚本应用在生产环境中,是运用mysql主从的基础上######## vi mysqlm-s.sh   #!/bin/bash  ip=`ifconfig eth0|sed -n 2p|awk  '{ print $2 }'|awk -F : '{ print $2 }'`  port=`netstat -anl|grep 3306 |sed -n '1p' |awk '{print $4}'|awk -F: '{ print $2}'`  array=($(mysql -uUS

Linux网络流量监控与分析工具Ntop和Ntopng

Ntop工具 Ntop是一个功能强大的流量监控.端口监控.服务监控管理系统 能够实现高效地监控多台服务器网络 Ntop功能介绍 Ntop提供了命令行界面和web界面两种工作方式,通过web'界面,可以清晰展示网络的整体使用情况.网络中各主机的流量状态与排名.各主机占用的带宽以及各时段的流量明细.局域网内各主机的路由.端口使用情况等. Ntop是网络流量监控中的新秀,它是一种网络嗅探器,在运维中,可以使用Ntop检测网络数据传输.排除网络故障,分析网络流量判断网络上存在的各种问题.同时监控是否有黑

详解网络流量监控&#8203;

详解网络流量监控 网络的行为特征可以通过其承载的流量的动态特性来反映,所以有针对性地监测网络中流量的各种参数(如接收和发送数据报大小.丢包率.数据报延迟等信息),能从这些参数中分析网络的运行状态.通过分析和研究网络上所运载的流量特性,有可能提供一条有效的探索网络内部运行机制的途径. 另外,网络流量反映了网络的运行状态,是判别网络运行是否正常的关键.如果网络所接收的流量超过其实际运载能力,就会引起网络性能下降.通过流量测量不仅能反映网络设备(如路由器.交换机等)工作是否正常,而且能反映出整个网络运

网络分流器-网络分流器TAP网络流量监控

戎腾网络分流器作为网络安全重要装备,是整个网络安全领域网络监控前端最关键的装备! 今天我们详解网络流量监控! 网络分流器TAPATCA网络分流器支持多用户高密度网络分流器DPI检测五元组过滤网络分流器镜像可视化流量汇聚分流从网络体系架构来说,网络流量是基础.所有对网络的应用和网络本身的行为特点的研究都可以通过对网络流量的研究来获得.网络的行为特征可以通过其承载的流量的动态特性来反映,所以有针对性地监测网络中流量的各种参数(如接收和发送数 据 报大小.丢包率.数据报延迟等信息),能从这些参数中分析

常用的主机监控Shell脚本

最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助. 1.查看主机网卡流量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/bin/bash #!/bin/bash #network #Mi