目次~
#contents
**概要 [#w9d81f6b]
コード内の配列で指定したインターフェイスのトラフィック値をifconfigコマンドで取得し、ログに記録するスクリプト。~
**設定 [#l59dd110]
Setセクションの以下に設定を行う
|IF|取得対象のインターフェイス名の配列|
|INTERVAL|取得間隔(秒)|
**使い方 [#p256d560]
適当なディレクトにファイルを配置して実行する。~
無限ループでログを取り続けるため、停止するときはCtrl+Cなどを使う。~
ログはスクリプトを実行したディレクトリ内にtraffic-logというディレクトリを生成し、インターフェイス毎に別ファイルで記録される。
**コード [#t1a31da0]
#!/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