При выходе в Инет мне бы хотелось отслеживать - сколько длился доступ и
сколько информации было получено/отправлено, какой пользователь
инициировал дозвон, по какому логину. Данную информацию можно получить
штатными средствами pppd. При установленном соединении ыpppd
устанавливает следующие переменные окружения (я рассматриваю только
нужные мне, про остальные можно прочитать в man pppd):
IPLOCAL - ip-адрес присвоенный интерфейсу в результате соединения
PPPLOGNAME - имя пользователя инициировавшего соединение
Также запускается скрипт ip-up, который в свою очередь запускает
ip-up.local
При окончании связи дополнительно устанавливаются такие переменные
окружения как:
CONNECT_TIME - количество секунд между началом и завершением соединения
BYTES_SENT - количество байт отправленное через соединение
BYTES_RCVD - количество байт полученное через соединение
После чего запускается скрипт ip-down, который запускает ip-dwon.local
Таким образом, если зафиксировать в каком-нибудь файле состояние
переменных на начало и конец соединения, то можно получить неплохую
статистику по дозвонам.
Пусть статистику нужно записывать в /var/log/ppp.log, тогда в файл
/etc/ppp/ip-up.local нужно добавить строчки
/etc/ppp/ip-up.local # Данные о соединении
FILE_ACCOUNT="/etc/ppp/account"
. $FILE_ACCOUNT
# Log-файл
LOG_FILE="/var/log/ppp.log"
# Временная метка
CUR_DATE=`date +%Y%m%d" "%T`
# Записать статистику начала соединения в log-файл
echo ${CUR_DATE}" activated: account: "${ACCOUNT}", user: "${PPPLOGNAME}\
", local ip: "${IPLOCAL} >> $LOG_FILE
а в файл /etc/ppp/ip-down.local -
/etc/ppp/ip-down.local # Данные о соединении
FILE_ACCOUNT="/etc/ppp/account"
. $FILE_ACCOUNT
# Log-файл
LOG_FILE="/var/log/ppp.log"
# Временная метка
CUR_DATE=`date +%Y%m%d" "%T`
# Подготовка цифр, отвечающих за время проведенное в сети, к
# удобочитаемому формату: Часы:Минуты:Секунды
CT=${CONNECT_TIME}
CTT=`expr ${CT} % 60`
[ ${CTT} -lt 10 ] && PRE_S="0" || PRE_S=""
CON_TIME=${PRE_S}${CTT}
CT=`expr ${CT} / 60`
CTT=`expr ${CT} % 60`
[ ${CTT} -lt 10 ] && PRE_S="0" || PRE_S=""
CON_TIME=${PRE_S}${CTT}":"${CON_TIME}
CT=`expr ${CT} / 60`
CON_TIME=${CT}:${CON_TIME}
# Записать статистику конца соединения в log-файл
echo ${CUR_DATE}" terminated: account: "${ACCOUNT}", time: "${CON_TIME}\
", data received: "${BYTES_RCVD}", send: "${BYTES_SENT} >> $LOG_FILE
Теперь, при использовании Инета в /var/log/ppp.log будт появляться
следующие строчки:
20031021 15:16:57 activated: account: mylogin, user: nina, local ip: 213.59.73.164
20031021 15:19:57 terminated: account: mylogin, time: 0:03:14, recieved: 214003,
send: 37826
Ну, я думаю здесь ничего сложного.
C уважением, Kolotov Alexandr (aka mr. Эбола)
отвечать: myscri***@e*****.ru
ICQ: 100349254
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.kirovlug-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.kirovlug&email=
http://subscribe.ru/ mailto:ask@subscribe.ru