Я раньше ставил такую вещь с детализацией по годам, месяцам, числам и сессиям, писало во вложенные папки во флэш реса, короче флэш забивалась, да и не очень информативно, большей частью этой записанной информации не пользовался.
Сам нашел скриптик на каком-то Линуховском форуме, чуть поправил - работает.
Ппоказывает траффик через интерфейс ppp0, то есть если поднято соединение точка-точка 3g-плагином, для интерфейса eth, нужно поправить скрипт.
Это в автозапуск:
#!/bin/sh
# by banda 2009 $Id: trafbil, v 0.2 2009-03-22
# Скрипт учета трафика на ppp0 с защитой от перезаписи и сбоев питания
T=`eval date +%Y`
T0=`eval date +%m`
T2=`eval date +%H%M%S`
DIR=/var/trafbil/log/$T/$T0/`eval date +%d`
mv $DIR/ppp.out $DIR/$T2.out 2> /dev/null
mv $DIR/ppp.in $DIR/$T2.in 2> /dev/null
# главный цикл, на каждой 8-й секунде фиксировать трафик от ррр0
while :; do
# FLAG у меня не работал. Может он у вас работает. Он служит для единой
# копии запуска скрипт
#FLAG=~/$(basename $0); if [ -e $FLAG ]; then echo уже запущено 1>&2; exit 1; fi
TMPVALUE=`/sbin/ifconfig | awk '/^ppp0 /{print $1}' ` # проверяем, запущен ли ррр0
if [ "" = "$TMPVALUE" ]
then
mv $DIR/ppp.out $DIR/$T2.out 2> /dev/null
mv $DIR/ppp.in $DIR/$T2.in 2> /dev/null
else
# если pppd запущен, ведем учет
# Лог файлы создаются по годам, месяцам, дням и по сессиям. Все записи
# будут находится в директории пользователя - .trafbil/log
T=`eval date +%Y`
T0=`eval date +%m`
T2=`eval date +%H%M%S`
DIR=/var/trafbil/log/$T/$T0/`eval date +%d`
DIR1=/var/trafbil/log/$T/$T0
DIR2=/var/trafbil/log/$T
mkdir -p $DIR
PPP_IN=$(/sbin/ifconfig ppp0 | sed -ne 's/.*RX bytes:\([0-9]*\).*/\1/p')
PPP_OUT=$(/sbin/ifconfig ppp0 | sed -ne 's/.*TX bytes:\([0-9]*\).*/\1/p')
echo $PPP_OUT > $DIR/ppp.out
echo $PPP_IN > $DIR/ppp.in
PPP_IN_DAY_SUM=$(cat $DIR/*.in | awk '{s+=$1}END{print s}')
PPP_OUT_DAY_SUM=$(cat $DIR/*.out | awk '{s+=$1}END{print s}')
echo $PPP_IN_DAY_SUM > $DIR.in
echo $PPP_OUT_DAY_SUM > $DIR.out
PPP_IN_MONTH_SUM=$(cat $DIR1/*.in | awk '{s+=$1}END{print s}')
PPP_OUT_MONTH_SUM=$(cat $DIR1/*.out | awk '{s+=$1}END{print s}')
echo $PPP_IN_MONTH_SUM > $DIR1.in
echo $PPP_OUT_MONTH_SUM > $DIR1.out
PPP_IN_YEAR_SUM=$(cat $DIR2/*.in | awk '{s+=$1}END{print s}')
PPP_OUT_YEAR_SUM=$(cat $DIR2/*.out | awk '{s+=$1}END{print s}')
echo $PPP_IN_YEAR_SUM > $DIR2.in
echo $PPP_OUT_YEAR_SUM > $DIR2.out
fi
# отдохнем 8 секунд (если вам цпу и винт (флэш) не жалько можно и без слипа)
sleep 8
# rm -f $FLAG
done