Script rápido para cortar seção do arquivo de log com base no carimbo de data/hora

Script rápido para cortar seção do arquivo de log com base no carimbo de data/hora

Estou à procura de umroteiro rápidoque analisará um mail.log grande e retornará a parteentre dois carimbos de data/hora especificados. Gostaria de executá-lo em todos os meus servidores de e-mail e fazer com que eles copiem as partes relevantes do log para um local central para análise posterior.

Eu escrevi algo no bash que funciona, mas é lento.

Alguém sabe dequalquer coisa que já existepara conseguir isso - ou preciso aprender perl e inventar algo sozinho?

(Não estou colocando isso no SO, pois ainda não estou no ponto em que queroescreverqualquer código - apenas procurando por algo que alguém já esteja usando)

Responder1

adorei ah :)

Para meus logs, que estão no formato:

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

Eu usaria:

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

Presumivelmente, você pode adaptar isso conforme necessário, por exemplo, se não dividir os registros por dia.

Bônus:

Formato Apache, que eu tenho por aí:

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

Responder2

Para um intervalo de dias específico e para imprimir > arquivo de saída

(Não posso colocar como comentário na resposta acima, caso contrário terei feito isso)

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=<[email protected]>, size=2378, nrcpt=1 (queue active)
...

informação relacionada