目次
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