<div dir="ltr"><div><div><div><div>Dica,<br><br></div>Se for log do Linux (via syslog)<br></div>Joga no pipe e faz a leitura.<br><br><a href="http://mysfitt.net/tutorials/splunk_fifo.php">http://mysfitt.net/tutorials/splunk_fifo.php</a><br>
<a href="http://www.softpanorama.info/Logs/Syslog/pipes_in_syslog.shtml">http://www.softpanorama.info/Logs/Syslog/pipes_in_syslog.shtml</a><br><br><br></div>Com Perl faz assim, depois coloca no Cron a cada 5 minutos<br></div>
Uso isso no Serviço de E-mail<br><div>============================================================================================<br><i>#!/usr/bin/perl<br>use strict;<br>use IO::File;<br><br>sub readLog {<br>my $pat = '^(... .. ..:..:..) (\S+) \S+ ([a-zA-Z0-9]+): FILTER_LOGX: from=\<(.*?)\> to=\<(.*?)\> subject=\<(.*?)\> size=([0-9]+) hostip=([^ ]*) nrcpt=([0-9]+)';<br>
my $fh;<br> if (not sysopen($fh, "/var/log/smtp.pipe", O_RDONLY)) {<br> print $nl . " ... erro ao abrir PIPE \n";<br> $nl = "";<br> return '';<br> }<br>
print $nl . " ... leitura de log iniciada \n";<br> $nl = "";<br><br> while (<$fh>) {<br> chomp;<br> if (m{$pat}) {<br> $hora = $1;<br> $server_name = $2;<br>
$msgid = $3;<br> $from = lc $4;<br> $to = lc $5;<br> $subject = $6;<br> $size = $7;<br> $hostip = $8;<br> $nrcpt = $9;<br> print "$hora $server_name $msgid $from $to $subject $size $hostip $nrcpt\n";<br>
}<br> }<br><br> close $fh;<br>}</i><br> <br>============================================================================================<br><div><div><br></div></div></div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">Em 16 de junho de 2013 22:40, Marcio - Google <span dir="ltr"><<a href="mailto:marciorp@gmail.com" target="_blank">marciorp@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Salve Mestres!</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
Estou tentando fazer uma coisa que deve ser trivial, mas estou patinando.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
Quero monitorar um arquivo de log e procurar uma determinada cadeia de caracteres apenas nas linhas que foram adicionadas após a última varredura.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">
<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hoje eu fico dentro de um loop abrindo e fechando o arquivo. A cada vez que abro procuro a cadeia e se encontro mostro no terminal.</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Não estou satisfeito com a solução. Queria que o script "percebesse" toda vez que fosse adicionado linha no final do arquivo e procurasse a cadeia somente nas linhas que foram adicionadas.<br>
</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">O que quero é +- o que o "tail -F arquivo.log" faz.<br>
</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Quando acho a cadeia em uma determinada linha, preciso imprimir cinco linhas, sendo duas antes da linha que encontrei, a linha que encontrei e duas linhas após.</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Qual a forma mais eficiente de fazer isso?</div><div><div dir="ltr">
<br>[...]'s<br><br>Marcio<div><br></div><div><div style="font-family:arial;font-size:small">========================================</div><div style="font-family:arial;font-size:small">########### Campanha Ajude o Marcio! ###########</div>
<div style="font-family:arial;font-size:small"><a href="http://sosmarcio.blogspot.com.br/" style="color:rgb(17,85,204)" target="_blank">http://sosmarcio.blogspot.com.br/</a></div><div style="font-family:arial;font-size:small">
<a href="http://www.vakinha.com.br/VaquinhaP.aspx?e=195793" style="color:rgb(17,85,204)" target="_blank">http://www.vakinha.com.br/VaquinhaP.aspx?e=195793</a><br></div><div style="font-family:arial;font-size:small">========================================</div>
</div></div></div>
</div>
<br>=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><br>-- <br>..............................................................................<br><b>Com Deus todas as coisas são possíveis</b> ::: <a href="http://www.linuxpro.com.br" target="_blank">LinuxPro</a><br>
<br><i><font size="1">"A qualidade nunca se obtém por acaso; ela é sempre o resultado do esforço inteligente." (John Ruskin)<br>"A mente que se abre a uma nova ideia jamais volta ao seu tamanho original" (Albert Einstein)</font></i><br>
</div>