Вообще-то, есть гораздо более простой способ сделать это.
Скачать/документировать: autodrgrep.kl.sh
Команда:
./autodrgrep.kl.sh notchef /tmp/client.log '2016-05-08_08:00:00,2016-05-08_23:00:00' 'INFO' 'a2ensite' 5 10 -show
Пояснение:
autodrgrep.kl.sh - имя инструмента.
notchef - опция, которая передаётся инструменту, чтобы сказать ему, что делать. В данном конкретном случае он сообщает инструменту, какой тип лог-файла /tmp/client.log.
/tmp/client.log конечно же является лог-файлом.
2016-05-08_19:12:00,2016-05-08_21:13:00 - это диапазон дат из журнала, который вы хотите просканировать
“INFO” - это одна из строк в интересующих вас строках журнала.
“a2ensite” - еще одна строка в той же строке, в которой вы ожидаете найти “INFO”. Указание этих двух строк (INFO и a2ensite) изолирует и обрабатывает нужные вам строки намного быстрее, особенно если вы имеете дело с огромным лог-файлом.
5 указывает Предупреждение. Указав 5, вы говорите программе предупреждать как ПРЕДУПРЕЖДЕНИЕ, если есть как минимум 5 вхождений строк поиска, которые вы указали
10 указывает Critical. Указав 10, вы говорите программе предупреждать как КРИТИЧЕСКИЙ, если в строках поиска, которые вы указали, содержится не менее 10 вхождений.
указывает, какой тип ответа вы получите. Указывая -show, вы говорите, что если будет найдено что-то, что соответствует указанным шаблонам, выводите на экран.
Пример выполнения:
# ./autodrgrep.kl.sh notchef /tmp/client.log '2016-05-08_19:12:00,2016-05-08_21:13:00' 'INFO' 'a2ensite' 5 10 -show
[2016-05-08 19:12:58-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 19:12:58-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 19:12:58-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 19:13:09-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 19:13:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 19:42:57-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 19:42:57-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 19:42:57-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 19:43:08-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 19:43:11-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 20:12:58-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 20:12:58-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 20:12:58-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 20:13:10-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 20:13:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 20:42:59-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 20:42:59-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 20:42:59-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 20:43:09-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 20:43:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 21:12:59-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 21:12:59-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 21:12:59-07:00] INFO: execute[a2ensite default] ran successfully
23
2---78720---23---ATWFILF---(2016-05-08)-(19:12)---(2016-05-08)-(21:13) SEAGM
А что, если указанного пользователем диапазона дат или временного интервала нет в журнале?
Каждое выполнение вышеуказанной команды всегда будет иметь строку (последняя строка вывода) с надписью “ATWFILF” или “ETWNFILF”.
ATWFILF означает, что в журнале найден фактический диапазон дат или временных рамок, которые вы запрашивали для поиска. Так что это очень хорошо.
ETWNFILF означает, что запрошенный вами диапазон дат или временных рамок не был найден в журнале. В этом случае самое близкое к указанному время будет обнаружено и использовано вместо него.