目次

概要

NIC単位でトラフィック量を記録するスクリプト。

使用法方法

適当な位置にスクリプトを保管して実行する。
スクリプトを配置したディレクトリ内にtraffic-logディレクトリを作成し、このディレクトリ内にインターフェイス単位のログファイルを生成する。

コード

#!/bin/sh
# ---------------------------
#  Traffic Log Script
# ---------------------------
#  Version : 1.0
#  Date    : 2012/03/25
# 

export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH

##
## Set
##

#IF=( bond0 bond1 eth0 eth1 eth2 eth3 eth4 eth5 eth6 )
IF=( eth0 eth1 eth2 eth3 )
#IF=( eth2 )

INTERVAL="5" 

DATE=`date +%Y%m%d-%H%M%S`
LOGDIR="./traffic-log"
LOGNAME="traffic_"$DATE".log"

##
## Check 
##

test -d $LOGDIR || mkdir $LOGDIR

##
## Execute
##

while :
do

i=0
n=${#IF[@]}
while [ $i -lt $n ];
do

## init
DATETIME=`date +%Y/%m/%d-%H:%M:%S`

if [ ! -f $LOGDIR/${IF[i]}"-"$LOGNAME ]; then
 echo "Interface Traffic Log for ("${IF[i]}")" >> $LOGDIR/${IF[i]}"-"$LOGNAME
 echo "Date,RX(Total bytes),TX(total bytes),RX(diff),TX(diff)" >> $LOGDIR/${IF[i]}"-"$LOGNAME
 echo "START,0,0,0,0" >> $LOGDIR/${IF[i]}"-"$LOGNAME
fi

## get now value
RXNOW=`ifconfig ${IF[i]} | grep "bytes:" | awk '{print $2}' | sed -e "s/bytes://g"`
TXNOW=`ifconfig ${IF[i]} | grep "bytes:" | awk '{print $6}' | sed -e "s/bytes://g"`

## get last value
RXLAST=`tail -1 $LOGDIR/${IF[i]}"-"$LOGNAME | cut -d , -f 2`
TXLAST=`tail -1 $LOGDIR/${IF[i]}"-"$LOGNAME | cut -d , -f 3`

## calc (NOW - LAST)
RX=`expr $RXNOW - $RXLAST`
TX=`expr $TXNOW - $TXLAST` 

## log output 
echo $DATETIME","$RXNOW","$TXNOW","$RX","$TX 2>&1 >> $LOGDIR/${IF[i]}"-"$LOGNAME

## out put
echo "--------------------------------------"
echo ${IF[i]}
echo "RX(incoming) = "$RX" bytes"
echo "TX(outgoing) = "$TX" bytes"
##

i=$(($i+1))
done

echo "--------------------------------------"
sleep $INTERVAL
done

#EOF

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-24 (火) 15:40:23 (4294d)