文章標簽 ‘shell’

linux下監控網卡流量的shell腳本

2011年8月25日 沒有評論

linux下可以很容易獲取網卡信息,使用命令?cat /proc/net/dev 即可。該命令詳細列出當前網卡流入流出的字節總數,要監控網絡的流量,只需要按一定的時間間隔去讀取流量信息,然后做一下簡單的四則運算即可。附完整的腳本如下:

#!/bin/bash

usage() {
        echo "Useage : $0"
        echo "eg. sh $0 eth0 2"
        exit 1
}

if [ $# -lt 2 ]
then
        usage
fi

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_in=$((dif_in/1024))
        dif_out=$(((out-out_old)/timer))
        dif_out=$((dif_out/1024))
        ct=$(date +"%F %H:%M:%S")
        echo "${ct} -- IN: ${dif_in} KByte/s     OUT: ${dif_out} KByte/s"
        in_old=${in}
        out_old=${out}
done

exit 0
分類: Linux 標簽: , ,

linux下shell的浮點數四則運算

2011年8月14日 沒有評論

shell下的四則運算有兩種方式,一個是使用expr,另外一個用$(()),例如 expr 數1 運算符(+-*/) ?數2或$((?數1 運算符(+-*/) ?數2)),需要注意的是使用expr時操作符的前后需要一個空格.但是上述兩個都不能進行浮點數的運算,為了達到計算浮點數,可以借助命令awk來實現.例如?awk ‘BEGIN{print 7.01/5+2.3 }’執行后結果為3.702.如果兩個操作數是保存在變量中,必然 a=2.2,b=5,需要計算a除以b該怎么操作呢??awk ‘{print $a/$b}’,很可惜,這樣是不行的,似乎在awk里面無法通過$a來獲取變量的值,但是可以通過echo的方式把變量值傳入,?echo “$a $b” | awk ‘{print $1/$2}’,這樣就可以了,如果還是操作數,都加在echo中就行了.

分類: Linux 標簽: , , , ,

無覓相關文章插件,快速提升流量

30选5怎么中奖