
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)
...