linux_監控網路卡流量指令碼

wangzhensheng發表於2009-01-06

監控網路卡流量指令碼

[@more@]

監控網路卡流量指令碼

前言:這個指令碼是用來監控網路卡的瞬時流量的,跟Cacti的計算結果完全吻合。如果想讓系統每多少分鐘取一次可

以將此指令碼改良成任務計劃執行的指令碼並記錄到日誌中。

#!/bin/bash
############################
##
## Author : Ajian
## Time : 2007-9-21
## File: netflood.sh
## watch the eth0 or eth1
#################################
#Set the varible.
#ETH=eth0
ETH="$1"
while : ; do
time=`date +%m"-"%d" "%k":"%M`
day=`date +%m"-"%d`
rx_before=`ifconfig $ETH|sed -n "8"p|awk '{print $2}'|cut -c7-`
tx_before=`ifconfig $ETH|sed -n "8"p|awk '{print $6}'|cut -c7-`
sleep 2
rx_after=`ifconfig $ETH|sed -n "8"p|awk '{print $2}'|cut -c7-`
tx_after=`ifconfig $ETH|sed -n "8"p|awk '{print $6}'|cut -c7-`
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps"
sleep 2
done

==================================

工具執行效果如下:
#iftop eth0 1 3
ifname in_bytes/s out_bytes/s total_bytes/s
eth0 446 418 864
eth0 70 182 252
eth0 70 182 252
指令碼內容如下:
#!/bin/bash
# osdba 2008.11.09 monitor the interface's network traffic.
if [ $# -ne 3 ];then
echo example: ntop eth0 1 10
exit
fi
eth=$1
count=$3
interval=$2
infirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $2}')
if [ -z "$infirst" ];then
echo The network interface $eth is not exits!
exit 1;
fi
outfirst=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $10}')
echo "ifname" "in_bytes/s" "out_bytes/s" "total_bytes/s" |awk '{printf("%10s %16s %16s %

16sn",$1,$2,$3,$4)}'
sleep $interval"s"
i=0
while [ "$i" -lt "$count" ]
do
inend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $2}')
outend=$(cat /proc/net/dev |tr ':' ' '|awk '/'$eth'/{print $10}')
sumin=$((($inend-$infirst)/$interval))
sumout=$((($outend-$outfirst)/$interval))
sum=$(($sumin+$sumout))
echo $eth $sumin $sumout $sum |awk '{printf("%10s %16s %16s %16sn",$1,$2,$3,$4)}'
infirst=$inend
outfirst=$outend
i=$(($i+1))
sleep $interval"s"
done

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8806316/viewspace-1015749/,如需轉載,請註明出處,否則將追究法律責任。

相關文章