zoukankan      html  css  js  c++  java
  • 查看网卡流量shell脚本工具:network_top.sh

           数据库服务器、图片服务器、提供FTP服务器等网卡的流量,一般都会比较大,为此我们非常有必要进行必要的监控措施,以便知晓网卡是否会成为瓶颈,以及可以建立网卡流量基准线,方便对比查看流量是否有异常。

    通过shell脚本编写一小段代码实现查看网卡端口流量的效果:

    1)         查看指定的某网卡端口的流量

    2)         查看端口的流入值/流出值/总量值;

    3)         指定二次观察端口流量的间隔时间和观察次数;

    shell脚本network_top.sh实现的三种效果截图,如图所示:
    1) 执行network_top.sh脚本无传递任何参数的错误提示信息

    1-1

    2) 执行network_top.sh脚本传递错误参数的错误提示信息

    1-2

    3) 执行network_top.sh脚本正确传递参数的采集数据效果图

    1-3

    shell脚本network_top.sh的代码段

    #!/bin/bash
    #Name: network_top.sh
    #Usage: sh network_top.sh --network-port=eth0 --interval-time=1 --repeat-total=10
    #Description: monitor the network interface's flow
    #WebSite: www.mysqlops.com
    
    usage()
    {
    cat <<EOF
    Usage: $0 [OPTIONS]
      --network-port=ethN    Show which network port,For Example --network-port=eth0.
      --interval-time=N      Every twice that need interval time,For Example --interval-time=1.
      --repeat-total=N       We need to see a continuous flow of card number,For Example --repeat-total=10.
    EOF
    exit 1
    }
    
    if [ "$#" -lt 1 ] ; then
       usage
    fi
    
    for INPUT_DATA in $*
    do
        INPUT_DATA_1=$1
        Val=`echo "$INPUT_DATA_1" | sed -e "s;--[^=]*=;;"`
    
        case "$INPUT_DATA_1" in
           --network-port=*)
             ETH_PORT="$Val"
           ;;
           --interval-time=*)
             INTERVAL_TIME="$Val"
           ;;
           --repeat-total=*)
             REPEAT_TOTAL="$Val"
           ;;
           *)
           echo -e "\n ERROR VARIABLES: $INPUT_DATA_1 \n"
           usage
           exit 1
           ;;
        esac
        shift
    done
    
    infirst=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$ETH_PORT'/{print $2}')
    outfirst=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$ETH_PORT'/{print $10}')
    
    echo "$ETH_PORT" "in_bytes/sec" "out_bytes/sec" "total_bytes/sec" |awk '{printf("%10s %16s %16s %16s\n",$1,$2,$3,$4)}'
    sleep $INTERVAL_TIME"s"
    
    i=0
    while [ "$i" -lt "$REPEAT_TOTAL" ]
    do
       inend=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$ETH_PORT'/{print $2}')
       outend=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$ETH_PORT'/{print $10}')
       sumin=$((($inend-$infirst)/$INTERVAL_TIME))
       sumout=$((($outend-$outfirst)/$INTERVAL_TIME))
       sum=$(($sumin+$sumout))
    
       echo "$ETH_PORT" $sumin $sumout $sum |awk '{printf("%10s %16s %16s %16s\n",$1,$2,$3,$4)}'
       infirst=$inend
       outfirst=$outend
       i=$(($i+1))
       sleep $INTERVAL_TIME"s"
    done
  • 相关阅读:
    VMware虚拟机安装
    软件测试面试题汇总
    软件测试步骤详解
    软件测试的分类&软件测试生命周期
    BUG 的生命周期
    Jmeter连接Mysql数据库
    Navicat连接Mysql报错:Client does not support authentication protocol requested by server;
    Mysql安装(win10 64位)
    Jmeter生成测试报告
    (转)Jmeter http请求之content-type
  • 原文地址:https://www.cnblogs.com/ylqmf/p/2217561.html
Copyright © 2011-2022 走看看