20619-1 (Компьютерное управление производством), страница 3
Описание файла
Документ из архива "Компьютерное управление производством", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "20619-1"
Текст 3 страницы из документа "20619-1"
Демонизируется ;-);
Записывает свой PID в файл с именем NAS-порта в каталог /var/run (если у провайдера больше одного NAS'a - то необходимо модифицировать демон, чтобы избежать конфликтов в каталоге /var/run между NAS'ами);
Программирует собственный таймер на заданный квант времени и входит в бесконечный цикл, вывести из которого может только SIGHUP.
Действия, выполняемые демоном при истечении одного кванта времени
Обновить счетчик (в секундах) продолжительности текущего соединения, в соответствии с действующим тарифом вычислить стоимость одного кванта времени, обновить переменную в которой накапливается стоимость текущей сессии;
Проверить, присутствует ли пользователь все еще в системе - просмотреть файл /var/run/utmp. Если пользователя в системе нет, то вызвать процедуру, выполняемую при завершении сессии;
Если пользователь не исчерпал свой лицевой счет, то ждать истечение следующего кванта времени. В противном случае описанные ниже действия возникают при исчерпывании средств на лицевом счете:
Проверить, является ли этот пользовать "привелегированным". Для этого посмотреть на флажок us.unoff. Если us.unoff==1, то ждать истечение следующего кванта времени;
Проверить, была ли вызвана программа /var/statserv/bin/killuser, если да - то ждать истечение следующего кванта времени. Дело в том, что из-за особенностей построения некоторых систем аутентификации, при исчерпывании средств на лицевом счете, фактически пользователь отключается не сразу после вызова программы /var/statserv/bin/killuser, а через некоторый интервал времени;
Если файл .pay.next отсутствует в домашнем каталоге пользователя, значит, пользователя необходимо принудительно отключить. Переход к пункту 9;
Прочитать сумму из файла .pay.next. Переписать ее в файл .pay. Удалить файл .pay.next. Вычислить текущий размер лицевого счета пользователя. Если он отрицателен, то переход к пункту 9;
Перечитать новый прайс-лист из файла .account.next. Удалить файл .account.conf, если он присутствует. Переименовать файл .account.next в файл .account и ждать истечение следующего кванта времени.
Вызвать программу /var/statserv/bin/killuser с параметрами имя_пользователя и NAS-порт, которая пошлет сигнал на отключение пользователя;
Действия, выполняемые демоном при завершении сессии
При завершении сессии сервер аутентификации TACACS (или pppd) читает PID демона из каталога /var/run/ и посылает ему SIGHUP (возможен, также другой вариант, когда демон постоянно сканирует файл utmp и выполняет ниже описанные действия, если пользователь "изчез" из файла utmp). Демон удаляет файл со своим PID-ом из /var/run/, записывает сведения о только что завершенной сессии в файл .weekly, обновляет файл .current с текущим размером лицевого счета пользователя и вызывает скрипт /var/statserv/bin/close_session. с параметрами имя_пользователя, NAS-port, продолжительность_сессии, стоимость_сессии.
Контрольный пример.
Описание использования демона биллинга
Демон billing является ядром предлагаемой системы учета пользователей для ISP. Он может работать в двух режимах - в "основном" режиме (т.е. режиме демона) для контроля лицевого счета пользователя в реальном масштабе времени и в "вспомогательном" режиме выдачи сведений о размере лицевого счета пользователя или контроля правильности задания тарифной схемы. Ниже приведены все возможные ключи запуска и параметры командной строки:
/var/statserv/bin/billing
Usage error: billing [-vdeashtpPrRwW] [username] [port] [nas]
-v show version and exit
-d daemonize billing
-e increase debug level in daemonize mode
-a show current price
-c show current account for sysadmin
-s show current account
-h show current account in HTML format
-t total user account
-p show pay -P show pay history
-n show pay.next -N show pay.next history
-r show work -R show work history
-w show weekly -W show weekly history
Режим демона - запуск с ключом -d. Далее следуют обязательные параметры - имя пользователя, NAS-порт (порт модема) и имя NAS-сервера (если NAS-сервер у ISP один, то этот параметр выбирается произвольно, однако совсем опускать его нельзя). Пример:
/var/statserv/bin/billing -d jackson Async2 access.provider.net
Режим выдачи сведений о размере лицевого счета пользователя - запуск с ключом -s и единственным параметром - именем пользователя. Пример:
/var/statserv/bin/billing -s jackson
В данном варианте на стандартный вывод ничего не выводится, а "знак" лицевого счета отражается в коде возврата. Если размер лицевого счета больше либо равен нулю, т.е. доступ пользователю в систему разрешен, то billing возвращает число 0, если меньше нуля, т.е. доступ пользователю в систему ограничен, то billing возвращает число 1.
/var/statserv/bin/billing -st jackson
На стандартный вывод выводится общий размер лицевого счета пользователя в plain text. См. п.4 алгоритма вычисления размера лицевого счета пользователя
/var/statserv/bin/billing -spt jackson
На стандартный вывод выводится общий размер начислений на лицевой счет пользователя и его общий размер в plain text. Алгоритм вычисления лицевого счета тот же самый. Ключ -P задает вывод истории начислений.
/var/statserv/bin/billing -c jackson
Соответствует вызову
/var/statserv/bin/billing -stpnrw jackson
т.е. наиболее "употребительному" использованию billing с точки зрения системного администратора. Вызов billing с ключом -h, например
/var/statserv/bin/billing -shtpnrw jackson
выводит информацию о лицевом счете пользователя в HTML-формате для того, чтобы ее можно было предоставлять пользователю через www-интерфейс;
Режим проверки алгоритма выбора прайс-листа для пользователя. Вызов:
/var/statserv/bin/billing -a jackson
Предназначен исключительно для системного администратора чтобы контролировать правильность задания тарифной схемы для данного пользователя.
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://www.ed.vseved.ru/