LOGWATCH.PL
logwatch.pl - просмотр и выборка определенных событий из виндовых логов
Просматривает виндовс логи, выбирает определенные события по заданным условиям и отправляет все, что выбрал на электронную почту ( предполагается админу...).
Аргументы командной строки:
- -cfg
-
Полный путь к файлу конфигурации. По умолчанию logwatch.cfg.
- -s
-
Имена разделов виндового журнала сообщений... ( может быть несколько, каждый раздел описывается с -s ). По умолчанию System, Application и Security
- -p
-
Интервал времени за который смотреть логи, в формате ЧЧ:ММ. Например, чтобы просмотреть все логи за последние 2 с половиной часа надо написать примерно так 2:30. По умолчанию 6:00.
- -type
-
Тип выводимой информации ( html / text ). По умолчанию html.
- -send_empty
-
Отправлять уведомление о проведении проверки если не сканирование логов не дало результатов... То есть если в логе не было обнаружено событий подлежащих отправке по почте, то почтой отправляется дата проведения проверки, если флаг send_empty не установлен ( по умолчанию ) то почта в данном случае не отправляется.
- -mail_to
-
Адресат для получения выбранных логов.
- -mail_from
-
От кого исходящая почта...
- -smtp
-
Адрес почтового сервера через который производится отправка почты.
- -charset
-
Кодировка письма. По умолчанию windows-1251.
В файле описываются параметры для задания определенных условий выборки лог-сообщений...
Формат такой:
EVENT
параметр значение
Список параметров:
- Section
-
Имя секции. Если задано то делаем выборку только из той секции.
- noSectino
-
Имя секции. Исключить из выборки данную секцию.
- Type
-
Выбирать сообщения только данного типа ( erro, warn, info, a_se, a_fa ).
- noType
-
Не выбирать сообщения данного типа.
- Source
-
Включить в выборку сообщения из данного источника.
- noSource
-
Исключить из выборки сообщения данного источника.
- RegExp
-
Поиск в лог-строке с помощью регулярного выражения.
- noRegExp
-
Исключить из выборки строку содержащую данное регулярное выражение...
- Group
-
Имя группы в которую помещаются сообщения удовлетворяющие всем условиям.
- Handler
-
Имя программы для использования в качестве внешнего фильтра, к данной командной строке добавляются два аргумента - первый аргумент внешней программы имя файла с данными для обработки, второй аргумент имя файла в который фильтр должен записать обработанные данные.
- Raw_Handler
-
Тоже, что и Handler только никакие данные не экранируются, то есть если в логе событие занимает несколько строк то и обработчику оно передастся соответствующим образом... Сделано с расчетом на некоторое будущее...
- MultiLog
-
При использовании данной опции поиск продолжается далее даже при удачном совпадении... Короче, по умолчанию как только строка с логом подпадает под описание в какой либо секции, поиск по следующим секциям не производится - данная опция отключает это...
- Log_Format
-
Формат выводимой лог строки события ( отрабатываем через printf ). Что то, примерно такое например: %2.2d/%2.2d %2.2d:%2.2d:%2.2d %s %s: %s
- Format_Arg
-
Аргументы передаваемые в printf. Например так, для вышеописанного Log_Format: Month,Day,Hour,Min,Sec,Type,Source,Message
-
Возможно использовать:
- Date
-
дата события.
- Year
-
год события ( 2004 ).
- Month
-
месяц события ( 1 - 12 ).
- Day
-
день события ( 1 - 31 ).
- Hour
-
час события ( 01 ).
- Min
-
минуты события ( 02 ).
- Sec
-
секунды события ( 03 ).
- TypeRaw
-
числовой код типа события.
- Type
-
строковое представление типа события.
- Message
-
строка сообщения события.
- Source
-
источник генерации события.
- Computer
-
имя компьютера на котором сгенерировано событие.
- User
-
-
- RecordNumber
-
номер записи события.
- Section
-
имя секции журнала.
Условия сопоставления проверяются в порядке их описания в конфигурационном файле... Каждое условие - логическое 'и', то есть type=erro и regexp=xxx и noregexp=yyy...
В описании Section, noSection, Source, noSource, Type, noType можно использовать только одно условие... Например условие 'Type erro,warn' - не корректно... Внутри скрипта все более понятно...
При разборе регекспов используется конструкция вида str =~ m#RegExp#;, где str - строка полученная из sprintf с заданными условиями ( log_format и format_arg )...
Пример конфига:
EVENT
# Использовать все секции описанные через -s, кроме System
noSection System
# Найти в данных секциях сообщения типа erro
Type erro
# И чтобы строка сообщения или имя устройства содержали слово logOn
RegExp logon
# Формат отправляемых логов
# Section [Hour:Min:Sec] Source: Message
Log_Format %s [%2.2d:%2.2d:%2.2d] %s: %s
Format_Arg Section,Hour,Min,Sec,Message
# Группа к которой относятся сообщения
Group Сообщения об ошибках со словом logon, кроме секции System
EVENT
# Сообщения из секции систем
Section System
# С типом erro
Type erro
...
# Заносим в группу
Group Ошибки в System
ну и так далее...
Igor V. Okunev mailto:igor[at]prv.mts-nn.ru
http://www.mts-nn.ru/~gosha
icq:106183300
LOGROTATE.PL
logrotate.pl - ротация виндовых логов
Вобщем возникла некоторая необходимость автоматизировать сохранение виндовых ( вин2000 ) логов в текстовом формате и обеспечить их ротацию - данный скрипт это реализует ( в обьеме нужном мне ).
Данный скрипт запускается по `работа по расписанию` раз в сутки ( у меня ночью ), в зависимости от установленных значений ( daily, weekly, montly ) производится конвертация логов. По умолчанию используется weekly, чтобы установить daily нужно сначала в конфиге написать weekly=0... такова реализация.
В командной строке возможен один аргумент -cfg - полное имя файла конфигурации ( по умолчанию rotate.cfg )
Формат такой:
[имя_секции]
опции
Список опций:
- file
-
Имя файла в который складываются логи для данной секции
- rotate
-
Число хранимых лог файлов ( формат примерно такой rotate=10, при использовании weekly храним логи за 10 недель )
- dateext
-
При установке данной опции логи храним в формате имя_файла-YYYY-MM-DD, по умолчанию имя_файла-rotate_index
- daily
-
Архивировать логи каждый день
- weekly
-
Архивировать логи рраз в неделю
- montly
-
Архивировать логи раз в месяц
- forward
-
Записывать в лог файл записи о событиях в порядке от первого к последнему ( по умолчанию )
- backward
-
Записывать в лог файл записи о событиях в порядке от последнего к первому
- prerotate
-
Выполнить данную программу перед началом ротации ( через system ). Результат выполнения программы не обрабатывается.
- postrotate
-
Выполнить данную программу после ротации ( через system ). Результат выполнения программы не обрабатывается.
- noempty
-
При установке данной опции и нулевой длине новых лог данных, старые файлы с логами не затираются...
- noclear
-
При установке данной опции после дампа данных в лог файл они не удаляются из системного журнала.
- log_format
-
Формат выводимой лог строки события ( отрабатываем через printf ). По умолчанию: %2.2d/%2.2d %2.2d:%2.2d:%2.2d %s %s: %s
- format_arg
-
Аргументы передаваемые в printf. По умолчанию: Month,Day,Hour,Min,Sec,Type,Source,Message
-
Возможно использовать:
- Date
-
дата события
- Year
-
год события ( 2004 )
- Month
-
месяц события ( 1 - 12 )
- Day
-
день события ( 1 - 31 )
- Hour
-
час события ( 01 )
- Min
-
минуты события ( 02 )
- Sec
-
секунды события ( 03 )
- TypeRaw
-
числовой код типа события
- Type
-
строковое представление типа события
- Message
-
строка сообщения события
- Source
-
источник генерации события
- Computer
-
имя компьютера на котором сгенерировано событие
- User
-
-
- RecordNumber
-
номер записи события
Okunev Igor V. mailto:igor@prv.mts-nn.ru
http://www.mts-nn.ru/~gosha
icq:106183300