查看網卡流量shell指令碼工具:network_top.sh

來源:互聯網
上載者:User

       資料庫伺服器、圖片伺服器、提供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.comusage(){cat <<EOFUsage: $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.EOFexit 1}if [ "$#" -lt 1 ] ; then   usagefifor 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    shiftdoneinfirst=$(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=0while [ "$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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.