# Временный файл
tmp_file="/tmp/trafd.traffic.$$.tmp"
# внешний ip машины
external_IP="`/sbin/ifconfig ed0 | grep inet | awk '{print $2}'`"
# Сегодяшний день
day="`date +%Y-%m-%d`"
# Текущий год
year="`date +%Y`"
# Текущий месяц
month="`date +%m`"
# Текущее время (секунды специально сделаны 00 - иногда cron запускает скрипт не
# в 00 секунд а позже (максимум что я видел - в 13), если машина очень загружена -
# как итог в логах начинает фигурировать разное число секунд.
# Мне это непонравилось

curr_time="`date +%H:%M:00`"
# Директория в которой будут храниться текстовые файлы с логами trafd
NewDir="/var/traffic/${year}/${month}"
# Пытаемся создать эту самую директорию на случай если это первый запуск
# или произошла смена месяца (года)
mkdir -p ${NewDir}
# Ну и топаем туда
cd ${NewDir}
# Считываем все переменные из файла /etc/rc.conf с целью извлечь оттуда
# строчку с названиями интерфейсов по которым работает trafd
# (У меня три сетевых платы и lo0 - просто интереса ради)
. /etc/rc.conf
# Для всех интерфейсов выковырнутых из rc.conf (висят в ${trafd_ifaces})
# выполняем один и тот же набор действий по разбору логов и запихиванию
# их в базу данных
for iface in ${trafd_ifaces}
do
# Сохраняем статистику по текущему интерфейсу
/usr/local/bin/trafsave ${iface}
# Преобразуем логи из двоичного в текстовый формат. Сохраняются они в
# папке /tmp в виде файлов summary.* c расширением по имени интерфейса
/usr/local/bin/traflog -i ${iface} -a -n -s > /tmp/summary.${iface} 2>/dev/null
# Очищаем файл с логами в двоичном формате
cat /dev/null > /usr/local/var/trafd/trafd.${iface}
# Дозаписываем логи в текстовый файл (пусть лежат на всякий случай...)
cat /tmp/summary.${iface} >> ${NewDir}/summary.${iface}
# проверяем интерфейс. Нам интересен лишь ed0
if [ ${iface} = 'ed0' ]
then
# Считаем траффик от нас. Считаем за весь месяц, кладём во временный
# файл - из него будет выводиться при логине - когда su делаешь
cat ${NewDir}/summary.${iface} | grep "^[0-9]" | grep "^${external_IP}"| awk '
BEGIN { d=0 }
{
# Суммируем 6-й столбец на вводе - траффик
d=$6+d
}
END {
printf " %s \n",d
} ' > ${tmp_file}
read bytes_out < ${tmp_file}
# Считаем траффик от нас. Считаем за весь месяц, кладём во временный
# файл - из него будет выводиться при логине - когда su делаешь
cat ${NewDir}/summary.${iface} | grep "^[0-9]" | grep -v "^${external_IP}"| awk '
BEGIN { d=0 }
{
# Суммируем 6-й столбец на вводе - траффик
d=$6+d
}
END {
printf " %s \n",d
} ' > ${tmp_file}
read bytes_in < ${tmp_file}
# заносим траффик во временный файл - будет выводиться на экран при логоне
# но вначале пересчитываем из байт в мегабаты.
echo " Траффик за этот месяц (пересчитывается каждые 10 минут):
Входящий: `expr ${bytes_in} / 1048576` Mb
Исходящий: `expr ${bytes_out} / 1048576` Mb" > /usr/local/var/trafd/tmp_data.txt
#echo ${bytes_in} ${bytes_out}
fi
done
# удаляем временный файл
rm ${tmp_file}
скрипт подсчёт траффика - используется на test.lissyara.su. Кроном - раз в 10 минут...
Лис а скажи могу я пристроить твой скрипт к своей фре?
У меня две сетевухи.
Одна в инет другая в лан.
И тогда не надо САРГа.
А скажи чё еще надо? и где я буду видеть этот отчёт.
И мне показалось что в твоём скрипте повторяется дважды одно и тоже/ Confused