calctime [-e cmd]
Анализатор времени, проведенного пользователями в системе.
Использует информацию, генерируемую модулем amlast. Если необходимо, можно указать программу-источник информации с помощью ключа `-e' или опции конфигурации `source' (см. ниже). Это можно использовать, например, если Вам необходимо собирать статистическую информацию с нескольких компьютеров или у Вас есть иная программа, совместимая по формату вывода с модулем amlast.
Итогом работы являются файлы `time.st'
в домашних каталогах
пользователей, для которых заданы конфигурационные файлы
`logins.cf'
.
`calctime.cf'
По умолчанию `calctime' не производит каких-либо вычислений для
учета ночных/вечерних скидок. Для того, чтобы задать их, служит
конфигурационный файл `calctime.cf'
, находящийся в корневом
каталоге сервера.
Существует две стратегии вычисления скидок:
Для вечерних/ночных входов время учитывается с понижающими коэффициентами. Т.е. реально клиент пробыл на линии, например, 1 час, а в его статистику записывается 40 минут.
Этот способ наиболее прост для описания в прайс-листе и внесения разного рода модификаций, но имеет существенный недостаток - в итоговой сводке, выдаваемой клиенту, невозможно указать сколько конкретно времени он провел днем/ночью/вечером (хотя сумма в денежном выражении будет посчитана верно).
Для вечерних/ночных/дневных сеансов указываются разные имена сервисов. Затем, в прайс-листе эти сервисы описываются с разной стоимостью.
При кажущейся простоте в такой схеме довольно сложно сделать разного рода скидки от общего объема, бесплатное время, абонентские платы. Хотя и это решаемо (пример смотрите в описании прайс-листов). Более того, автор в данный момент применяет именно такую схему учета времени.
Конфигурационный файл `calctime.cf'
состоит из текстовых строк;
пустые строки и строки, начинающиеся с символа `#' (решетка), игнорируются.
Значащие строки состоят из разделенных пробелами и/или табуляциями ключевого
слова и одного или нескольких аргументов.
Допустимы следующие ключевые слова:
Задает постфикс, который будет добавлен к имени сервиса из `logins.cf'
в случае попадания в указанный интервал времени.
Интервалы указываются двумы часами через тире (без пробелов!); и нижняя и верхняя граница интервала включаются в него.
Таким образом, чтобы указать, что с 23 до 7 должен использоваться постфикс `_n', а в иное время - `_d', надо написать:
# пример calctime.cf # postfix _n 23-06 postfix _d 07-22 |
Задает коэффициент в процентах учета времени для указанного диапазона(ов) времени. По умолчанию - 100%. Правила описания диапазонов полностью аналогичны директиве `postfix'.
Например, чтобы сделать ночью скидку 60%, можно создать такой файл:
# Ночью скидка 60% # scale 40 0-6 |
Задает имя программы (возможно с аргументами), используемой для чтения статистики. Формат вывода должен быть совместим с таковым модуля amlast.
По умолчанию используется модуль amlast без аргументов.
Наличие директив `postfix' и `scale' в одном файле допустимо, но бессмысленно. Необходимо выбрать какую-то одну стратегию расчета скидок. Напомним, что если не задано ни той, ни другой директивы, то будет просто просуммировано время работы клиента, без учета каких-либо скидок.
В случае попадания сеанса работы клиента на границу регионов модуль calctime корректно вычленяет соответствующие временные доли.
`logins.cf'
Файл задает соответствие входных имен и видов сервиса для пользователя. Например, пользователю Pfoo может соответствовать PPP сервис, а пользователю uufoo - uucp.
Файл состоит из набора строк, состоящих из двух полей - имени пользователя и имени сервиса. Пустые строки и строки, начинающиеся с символа `#', игнорируются.
Например, для ситуации рассмотренной выше, конфигурационный файл
`logins.cf'
может выглядеть так:
# Комментарий Pfoo t_dip uufoo t_uucp |
Если в домашнем каталоге пользователя отсутствует файл `logins.cf'
,
то считается, что данный пользователь не потребляет повременно
оплачиваемых услуг и файл `time.st'
для него не формируется.