NICのトラフィックログを取る
http://extstrg.asabiya.net/pukiwiki/index.php?NIC%A4%CE%A5%C8%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%ED%A5%B0%A4%F2%BC%E8%A4%EB目次
概要 †
コード内の配列で指定したインターフェイスのトラフィック値を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
Last-modified: 2012-03-25 (日) 14:01:53 (4680d)