目次

概要

コード内の配列で指定したインターフェイスのトラフィック値をifconfigコマンドで取得し、ログに記録するスクリプト。

設定

Setセクションの以下に設定を行う

IF取得対象のインターフェイス名の配列
INTERVAL取得間隔(秒)

使い方

適当なディレクトにファイルを配置して実行する。
無限ループでログを取り続けるため、停止するときはCtrl+Cなどを使う。
ログはスクリプトを実行したディレクトリ内に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-03-25 (日) 14:01:53 (4437d)