Назад | Перейти на главную страницу

Быстрый скрипт для вырезания раздела файла журнала на основе отметки времени

Я ищу быстрый сценарий который проанализирует большой mail.log и вернет часть между двумя указанными отметками времени. Я хотел бы запустить его на всех своих почтовых серверах и попросить их скопировать соответствующие части журнала в центральное место для дальнейшего анализа.

Я написал что-то на bash, что работает, но работает медленно.

Кто-нибудь знает о все, что уже существует для этого - или мне нужно выучить Perl и что-то придумать самому?

(Я не ставлю это на ТАК, так как я еще не в той точке, где я хочу записывать любой код - просто ищу то, что уже использует кто-то другой)

Обожаю awk :)

Для моих журналов, которые имеют формат:

Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........

Я хотел бы использовать:

awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog

Предположительно, вы можете адаптировать это по мере необходимости, например, если вы не разделяете журналы по дням.

Бонус:

Формат Apache, который у меня есть:

xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log

Для определенного диапазона дней и для печати> выходной файл

(Я не могу добавить комментарий в ответ выше, иначе я это сделаю)

HTH

awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log

cat m_range.log 
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<www-data@...ia.com>, size=2378, nrcpt=1 (queue active)
...