Демон 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/