[Назад] [Дальше] [Оглавление]

      calctime [-e cmd]

Анализатор времени, проведенного пользователями в системе.

Использует информацию, генерируемую модулем amlast. Если необходимо, можно указать программу-источник информации с помощью ключа `-e' или опции конфигурации `source' (см. ниже). Это можно использовать, например, если Вам необходимо собирать статистическую информацию с нескольких компьютеров или у Вас есть иная программа, совместимая по формату вывода с модулем amlast.

Итогом работы являются файлы `time.st' в домашних каталогах пользователей, для которых заданы конфигурационные файлы `logins.cf'.

По умолчанию `calctime' не производит каких-либо вычислений для учета ночных/вечерних скидок. Для того, чтобы задать их, служит конфигурационный файл `calctime.cf', находящийся в корневом каталоге сервера.

Существует две стратегии вычисления скидок:

путем "замедления" времени

Для вечерних/ночных входов время учитывается с понижающими коэффициентами. Т.е. реально клиент пробыл на линии, например, 1 час, а в его статистику записывается 40 минут.

Этот способ наиболее прост для описания в прайс-листе и внесения разного рода модификаций, но имеет существенный недостаток - в итоговой сводке, выдаваемой клиенту, невозможно указать сколько конкретно времени он провел днем/ночью/вечером (хотя сумма в денежном выражении будет посчитана верно).

путем разделения имен сервисов

Для вечерних/ночных/дневных сеансов указываются разные имена сервисов. Затем, в прайс-листе эти сервисы описываются с разной стоимостью.

При кажущейся простоте в такой схеме довольно сложно сделать разного рода скидки от общего объема, бесплатное время, абонентские платы. Хотя и это решаемо (пример смотрите в описании прайс-листов). Более того, автор в данный момент применяет именно такую схему учета времени.

Конфигурационный файл `calctime.cf' состоит из текстовых строк; пустые строки и строки, начинающиеся с символа `#' (решетка), игнорируются. Значащие строки состоят из разделенных пробелами и/или табуляциями ключевого слова и одного или нескольких аргументов.

Допустимы следующие ключевые слова:

postfix text range [range ..]

Задает постфикс, который будет добавлен к имени сервиса из `logins.cf' в случае попадания в указанный интервал времени.

Интервалы указываются двумы часами через тире (без пробелов!); и нижняя и верхняя граница интервала включаются в него.

Таким образом, чтобы указать, что с 23 до 7 должен использоваться постфикс `_n', а в иное время - `_d', надо написать:

# пример calctime.cf
#
postfix   _n    23-06
postfix   _d    07-22

scale percent range [range ..]

Задает коэффициент в процентах учета времени для указанного диапазона(ов) времени. По умолчанию - 100%. Правила описания диапазонов полностью аналогичны директиве `postfix'.

Например, чтобы сделать ночью скидку 60%, можно создать такой файл:

# Ночью скидка 60%
#
scale   40      0-6

source command

Задает имя программы (возможно с аргументами), используемой для чтения статистики. Формат вывода должен быть совместим с таковым модуля amlast.

По умолчанию используется модуль amlast без аргументов.

Наличие директив `postfix' и `scale' в одном файле допустимо, но бессмысленно. Необходимо выбрать какую-то одну стратегию расчета скидок. Напомним, что если не задано ни той, ни другой директивы, то будет просто просуммировано время работы клиента, без учета каких-либо скидок.

В случае попадания сеанса работы клиента на границу регионов модуль calctime корректно вычленяет соответствующие временные доли.

Файл задает соответствие входных имен и видов сервиса для пользователя. Например, пользователю Pfoo может соответствовать PPP сервис, а пользователю uufoo - uucp.

Файл состоит из набора строк, состоящих из двух полей - имени пользователя и имени сервиса. Пустые строки и строки, начинающиеся с символа `#', игнорируются.

Например, для ситуации рассмотренной выше, конфигурационный файл `logins.cf' может выглядеть так:

# Комментарий
Pfoo    t_dip
uufoo   t_uucp

Если в домашнем каталоге пользователя отсутствует файл `logins.cf', то считается, что данный пользователь не потребляет повременно оплачиваемых услуг и файл `time.st' для него не формируется.


[Назад] [Дальше] [Оглавление]