Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
/etc/cron.d/ipcad
* * * * * root rsh localhost dump >/dev/null
59 23 * * * root date "+\%Y\%m" > /var/log/ipcad/ipcad.date
0 0 1 * * root (rsh localhost dump /var/log/ipcad/ipcad-$(cat /var/log/ipcad/ipcad.date).dump && rsh localhost clear ip accounting) >/dev/null 2>&1
Первая задача из приведённого файла выполняет dump статистики каждую минуту. Делается это для защиты от непредусмотренных выключений и зависаний шлюза, на котором ведётся учёт проходящего трафика.
Вторая строчка – это такой маленький «хак», который автор статьи вынужден был сделать в связи с трудностью указания в расписании «последнего дня месяца» при настройке заданий cron. Суть в том, что каждый день в файл /var/log/ipcad/ipcad.date сохраняется текущий месяц и год (в формате YYYYMM). Эта же процедура ведь произойдёт и в последний день месяца. Уже через минуту третье задание сделает dump статистики в файл, к названию которого прикрепится содержимое файла ipcad.date (т.е. год и уже прошедший месяц в формате YYYYMM), и сбросит счётчик расходуемого трафика. В этот же день файл ipcad.date перезапишется новыми значениями текущих месяца и года. Не совсем красиво, но зато работает.
Теперь, когда есть данные о трафике по каждому месяцу, расположенные в разных dump-файлах, можно изменить скрипт, добавив к нему возможность просмотра общей и частной по каждому IP-адресу статистики израсходованного трафика за какой-то определённый месяц:
traff.acc.2
#!/bin/bash
HOST=localhost
USERS=/etc/hosts
case $1 in
M|m) echo "Summary LAN traffic of month $2 (Mbytes):"
rsh $HOST dump
awk '{s+=$4} END {print(s/1048576)}'
< /var/log/ipcad/ipcad-$2.dump
exit 0;;
U|u) grep -E '192.168.0.'$3'([^0-9]|$)' $USERS | awk '{print($2)}'
USER=`grep -E '192.168.0.'$3'([^0-9]|$)' $USERS | awk '{print($2)}'`
rsh $HOST dump
cat /var/log/ipcad/ipcad-$2.dump | grep -E '192.168.0.'$3'([^0-9]|$)'