e_watch.pl - просмотр и обработка данных внешних приложений с определенной частотой выполнения тех приложений...
Идея проста: есть конфиг в котором описаны внешние команды ОС, скрипт выполняет их с определенной частотой, парсит результат на присутствие/отсутствие, в полученных от внешней программы, данных и на основе этого запускает ту или иную программу...
Аргументы командной строки:
Полный путь к файлу конфигурации. По умолчанию e_watch.cfg.
Полный путь к лог файлу. По умолчанию e_watch.log.
Частота выполнения внешних программ. В минутах.
Краткая справка.
Использовать для логирования syslogd ( под *nix ) или EventLog
под win32.
Список параметров:
Команда операционной системы для запуска.
Описание команды для лог файла.
Регулярное выражения для поиска в данных полученных от внешней программы.
Команда ОС которая выполняется при успешном поиске регулярного выражения ( RegExp ) в данных внешней программы ( Cmd ). Данная программа запускается только при смене результатов поиска регулярного выражения с false на true..., тоесть дублирующиеся данные отсекаются...
Команда ОС которая выполняется при неуспешном поиске регулярного выражения ( RegExp ) в данных внешней программы ( Cmd ). Данная программа запускается только при смене результатов поиска регулярного выражения с true на false..., тоесть дублирующиеся данные отсекаются...
Первоначальное значение результата поиска регулярного выражения... Возможные значения -1, 1 или 0. По умолчанию -1, логировать первый результат при любом раскладе.
Шаг выполнения данной команды относительно основного шага выполнения команд... То есть если скрипт запущен с параметром командной строки -step 2 ( выполнять каждые 2 минуты ), а конфигурационном файле для данной команды ( Cmd ) значение Step равно 3, то данная команда будет выполняться с интервалом 6 минут...
Шаг регистрации сообщений с одинаковым статусом поиска регулярного выражения. То есть, по умолчанию дупы игнорируются, ( если предыдущий поиск регулярного выражения дал положительный результат, то обработка повторного положительного результата игнорируется, ждем отрицательного результата и тд... ), этот параметр говорит через сколько циклов давших одинаковый результат поиска повторно зарегистрировать лог сообщение... При параметре конфигурационного файла step = 2, и опции командной строки step = 2, и dup_step = 3, повторные сообщения будут логироваться каждые 12 минут...
То же , что и On_Exec только для дублирующихся данных...
То же , что и Off_Exec только для дублирующихся данных...
Пример конфига:
# # Команда на запуск # CMD ps ax # # Описание для лог файла # DESC MCCP Server
# # Регулярное выражение которое матчим в выводе `команды на запуск` # REGEXP 192\.168\.108\.132
# # Команда для запуска после изменения флага # на `образец найден` # ON_EXEC date | mail -s 'RAS clien "MCCP" online' root@localhost
# # Команда для запуска после изменения флага # на `образец _НЕ_ найден` # OFF_EXEC date | mail -s 'RAS clien "MCCP" offline' root@localhost
# # Положение флага при старте 1 - ON, 0 - OFF # BOOL 1
# # Частота выполнения задания (x1, x2, .., xN) # где N множитель тоесть при l_sleep = 1 и # шаге N = 2 данное задание будет выполняться # на каждом втором основном цикле программы..... # STEP 1
# # Шаг регистрации повторных событий ( если 0 то не регистрировать... ) # DUP_STEP 10
# # Команда для запуска после изменения флага # на `образец _НЕ_ найден` # OFF_DUP_EXEC /usr/local/bin/rcmd 192.168.108.132 -c 'restart service mccp'
ну и так далее...
Формат лог файла:
14/10/2004 19:12:59 : OFF : MCCP Server [ 0 d, 00:00:00 ] где:
время генерации записи
результат поиска RegExp'а ( On - найден, OFF - не найден )
коментария к событию ( параметр Desc файла конфигурации )
время прошедшее с момента последнего измения статуса ( On / Off ). 0 d - 0 дней, xx:xx:xx - часов:мин:сек
Igor V. Okunev mailto:igor@prv.mts-nn.ru
http://www.mts-nn.ru/~gosha
icq:106183300