Демон avregd, начиная с версии 5.4.4, одновременно с записью событий в базу данных (таблица EVENTS) может «уведомлять» о событиях внешнее приложение.
Поддерживаются следующие группы событий:
Полный перечень событий смотрите в нашем примере скрипта:
« /usr/share/doc/avregd/examples/scripts/event-collector.gz
»
на языке shell.
/etc/avreg/scripts/
»;root.root
0755
;Примечание: далее по тексту, под скриптом должен пониматься
именно «event-collector
» скрипт.
Скрипт запускается демоном avregd c помощью системного вывова popen(3). Сообщения о событиях передаются от демона к скрипту внутри связанного канала ввода-вывода (pipe). Эти сообщения скрипт должен читать построчно c устройства стандартного ввода (STDIN, дескриптор 0). В разных языках программирования для этого используюся разные конструкции, в интерпретируемых программах shell для чтения строки с stdin используется встроенная команда read.
Строка сообщения представляет собой набор полей, разделённых символами TAB (\t). Значения и порядок полей, в общем случае, для каждого события разные. Для уточнения этого вопроса вам придётся ознакомиться с исходным кодом нашего скрипта-примера на языке shell в каталоге «/usr/share/doc/avregd/examples/scripts/».
Для отладки скрипта вы можете пользоваться выводом отладочных
сообщений в лог-файлы. Сообщения, выведенные любыми командами
внутри скрипта (например, echo, printf, …) на стандартный вывод
(STDOUT, дескриптор 1), будут записываться в текстовый лог файл
«/var/log/avreg/<имя_скрипта>.log
», а ошибки
(STDERR, дескриптор 2) в
«/var/log/avreg/<имя_скрипта>.log
».
Для просмотра лог-файлов в реальном времени удобно пользоваться командой tail:
sudo tail -f /var/log/avreg/<имя_скрипта>.{log,err}
Старые лог-файлы автоматически ротируются штатным logrotate-ом
(см. «/etc/logrotate.d/avreg
»).
Скрипт может завершиться по одной из трёх причин:
set -e
;sudo kill `cat /var/run/avreg/evtcoll.pid`
В последних двух случаях, демон avregd будет пытаться вновь запустить скрипт и отрыть канал (pipe), только произойдёт это не сразу, а после после выполнения двух условий:
Для всех типов событий передаётся поле со значением времени возникновения события, как правило первое. Если точное время возникновения события важно, то пользуйтесь именно этим переданным значением, а не текущим временем (now) момента обработки данного события.
При остановке демона avregd, он будет ждать завершения скрипта. Сколько секунд он будет ждать или не будет ждать вовсе (0 сек.) указывается в значении параметра «event-collector».
Скрипт запускается демоном avregd и, стало быть, получает его
права (см. параметры «user»/«group» в avreg.conf глобально или в
секции avregd {}
) . Если для действий вашего скрипта
этих прав не хватает, то вы можете установить флаги setuid/setgid,
однако, правильнее и безопаснее использовать группы и членство в
группах.
Некоторые, возможно, полезные ссылки на статьи и пакеты.
Остальное подскажет http://www.google.ru/