监控linux网卡,三个监控linux网卡流量脚本

脚本1:

#!/bin/bash

e0_in_old=$(ifconfig eth0 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |head -n1)

e0_out_old=$(ifconfig eth0 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |tail -n1)

>e0_total_old=$(($e0_in_old + $e0_out_old))

e1_in_old=$(ifconfig eth1 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |head -n1)

e1_out_old=$(ifconfig eth1 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |tail -n1)

e1_total_old=$(($e1_in_old + $e1_out_old))

while true

do

sleep 1

e0_in_new=$(ifconfig eth0 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |head -n1)

e0_out_new=$(ifconfig eth0 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |tail -n1)

e0_total_new=$(($e0_in_new + $e0_out_new))

e1_in_new=$(ifconfig eth1 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |head -n1)

e1_out_new=$(ifconfig eth1 |grep bytes |awk '{print $2" "$6}' |egrep -o '[0-9]+' |tail -n1)

e1_total_new=$(($e1_in_new + $e1_out_new))

e0_in=$((($e0_in_new - $e0_in_old) * 8))

e0_out=$((($e0_out_new - $e0_out_old) * 8))

e0_total=$((($e0_total_new - $e0_total_old) * 8))

e1_in=$((($e1_in_new - $e1_in_old) * 8))

e1_out=$((($e1_out_new - $e1_out_old) * 8))

e1_total=$((($e1_total_new - $e1_total_old) * 8))

echo -e "eth0 IN: $e0_in \t b/s OUT: $e0_out \t b/s TOTAL: $e0_total \t b/s"

echo -e "eth1 IN: $e1_in \t b/s OUT: $e1_out \t b/s TOTAL: $e1_total \t b/s\n"

e0_in_old=$e0_in_new

e0_out_old=$e0_out_new

e0_total_old=$e0_total_new

e1_in_old=$e1_in_new

e1_out_old=$e1_out_new

e1_total_old=$e1_total_new

done

exit 0

脚本2:

#!/bin/bash

#  osdba 2008.10.22 monitor the interface's network traffic.

if [ $# -ne 3 ];then

echo Useage : $0 interface interval count

echo Example: $0 eth0 2 10

exit

fi

eth=$1

count=$3

interval=$2

inbytesfirst=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $2}')

if [ -z "$inbytesfirst" ];then

echo The network interface $eth is not exits!

exit 1;

fi

outbytesfirst=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $10}')

inpacketsfirst=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $3}')

outpacketsfirst=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $11}')

sleep $interval"s"

i=0

while [ "$i" -lt "$count" ]

do

inbytesend=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $2}')

outbytesend=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $10}')

inpacketsend=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $3}')

outpacketsend=$(cat /proc/net/dev |tr ':' ' '|awk  '/'$eth'/{print $11}')

bytesin=$(($inbytesend-$inbytesfirst))

bytesout=$(($outbytesend-$outbytesfirst))

packetsin=$(($inpacketsend-$inpacketsfirst))

packetsout=$(($outpacketsend-$outpacketsfirst))

if [ "$bytesin" -lt "0" ];then

bytesin=$((4294967295-$inbytesfirst+$inbytesend))

#echo bytesin $bytesin $inbytesfirst $inbytesend

fi

if [ "$bytesout" -lt "0" ];then

bytesout=$((4294967295-$outbytesfirst+$outbytesend))

#echo bytesout $bytesout $outbytesfirst $outbytesend

fi

if [ "$packetsin" -lt "0" ];then

packetsin=$((4294967295-$inpacketsfirst+$inpacketsend))

#echo packetsin $packetsin $inpacketsfirst $inpacketsend

fi

if [ "$packetsout" -lt "0" ];then

packetsout=$((4294967295-$outpacketsfirst+$outpacketsend))

#echo packetsout $packetsout $outpacketsfirst $outpacketsend

fi

bytesin=$(($bytesin/$interval))

bytesout=$(($bytesout/$interval))

packetsin=$(($packetsin/$interval))

packetsout=$(($packetsout/$interval))

sumbytesin=$(($sumbytesin+$bytesin))

sumbytesout=$(($sumbytesout+$bytesout))

sumpacketsin=$(($sumpacketsin+$packetsin))

sumpacketsout=$(($sumpacketsout+$packetsout))

if [ $(($i%20)) -eq 0 ];then

echo " ifname   | in_kbits/s out_kbits/s | in_kBytes/s out_kBytes/s | in_packets/s out_packets/s"

echo "--------- | ---------- ----------- | ----------- ------------ | ------------ -------------"

fi

echo $eth $bytesin $bytesout $packetsin $packetsout |awk '{printf("%9s | %10d %11d | %11d %12d | %12d %13d\n",$1,$2/128,$3/128,$2/1024,$3/1024,$4,$5)}'

inbytesfirst=$inbytesend

outbytesfirst=$outbytesend

inpacketsfirst=$inpacketsend

outpacketsfirst=$outpacketsend

i=$(($i+1))

sleep $interval"s"

done

sumbytesin=$(($sumbytesin/$i))

sumbytesout=$(($sumbytesout/$i))

sumpacketsin=$(($sumpacketsin/$i))

sumpacketsout=$(($sumpacketsout/$i))

echo "--------- | ---------- ----------- | ----------- ------------ | ------------ -------------"

echo Average $sumbytesin $sumbytesout $sumpacketsin $sumpacketsout |awk '{printf("%9s | %10d %11d | %11d %12d | %12d %13d\n",$1,$2/128,$3/128,$2/1024,$3/1024,$4,$5)}'

脚本3:

#!/bin/bash

# test network width

function usage

{

echo "Usage: $0?? "

echo "?????? e.g. $0 eth0 2"

exit 65

}

if [ $# -lt 2 ];then

usage

fi

typeset in in_old dif_in

typeset out out_old dif_out

typeset timer

typeset eth

eth=$1

timer=$2

in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }' )

out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $9 }' )

while true

do

sleep ${timer}

in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }' )

out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $9 }' )

dif_in=$(((in-in_old)/timer))

dif_out=$(((out-out_old)/timer))

echo "IN: ${dif_in} Byte/s OUT: ${dif_out} Byte/s"

in_old=${in}

out_old=${out}

done

exit 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值