Ari,<br><br>Você tem certeza de que não é o /var/log/maillog que está sendo bufferizado? Tirado do syslog.conf(5):<br><br> Regular File<br> Typically messages are logged to real files. The file must be speci‐<br>
fied as an absolute pathname.<br><br> <b>You may prefix each entry with a minus sign (‘‘-’’) to avoid syncing<br> the file after each log message</b>. Note that you might lose information<br> if the system crashes right after a write attempt. Nevertheless this<br>
might give you back some performance, especially if you run programs<br> that use logging in a very verbose manner.<br><br>No /etc/syslog.conf aqui do meu Ubuntu, tenho:<br><br>00:28:18 az@alexeiz:~ $ grep mail /etc/syslog.conf <br>
mail.* -/var/log/mail.log<br># Logging for the mail system. Split it up so that<br><a href="http://mail.info">mail.info</a> -/var/log/<a href="http://mail.info">mail.info</a><br>mail.warning -/var/log/mail.warn<br>
mail.err /var/log/mail.err<br><br>Ou seja, exceto o mail.err, todos os outros têm o '-' na frente do nome do arquivo, i.e., são bufferizados. Verifique como está no seu sistema.<br><br>Se é que eu entendi o formato no qual essas mensagens aparecem no log, eu escreveria assim:<br>
<br>-------->8-------->8-------->8-------- cut here -------->8-------->8-------->8--------<br>#/usr/bin/perl<br><br>open( LOG, "-|", "/usr/bin/tail -F /var/log/maillog" );<br>while(<LOG>) {<br>
chomp;<br> next unless /pop3d: LOGIN,/;<br> ($ip) = ( /ip=\[([^\]]+)\]/ );<br> print $ip . "\n";<br>}<br>close(LOG); # sim, purismo<br>-------->8-------->8-------->8-------- cut here -------->8-------->8-------->8--------<br>
<br>ou<br><br>-------->8-------->8-------->8-------- cut here -------->8-------->8-------->8--------<br>#!/bin/sh<br><br>/usr/bin/tail -F /var/log/maillog |<br> perl -nle '<br> next unless /pop3d: LOGIN,/;<br>
($ip) = ( /ip=\[([^\]]+)\]/ );<br> print $ip;<br> '<br># END<br>-------->8-------->8-------->8-------- cut here -------->8-------->8-------->8--------<br>
<br>Aos golfistas de plantão: não, isso não foi uma tacada inicial... :-P<br><br>[]s,<br>Russo<br><br><div class="gmail_quote">2009/7/7 Ari Arantes <span dir="ltr"><<a href="mailto:ariarantes@gmail.com">ariarantes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Testei com STDERR e também com $| = 1, mas o buffer continua.<br>
<br>
Consegui solucionar assim:<br>
<br>
#!/usr/bin/perl<br>
<br>
open(LOG,"tail -F /var/log/maillog |");<br>
while (<LOG>) {<br>
chomp($_);<br>
if ($_ =~ /pop3d: LOGIN,/) {<br>
($lixo, $ip, $lixo) = split('ip=\[', $_);<br>
($ip, $lixo) = split('\]', $ip);<br>
print "$ip $_\n";<br>
}<br>
}<br>
<br>
Obrigado pela ajuda!<br>
<br>
[]s,<br>
<br>
Ari<br>
<br>
<br>
<br>
2009/7/7 Lindolfo "Lorn" Rodrigues <<a href="http://lorn.br" target="_blank">lorn.br</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>>:<br>
<div><div></div><div class="h5">> Ari,<br>
><br>
> Ou você usa a saida de erro que não tem buffer<br>
><br>
> - print "$ip $log\n";<br>
> + print STDERR "$ip $log\n";<br>
><br>
> Ou você pode setar a variavel de flush para true:<br>
><br>
> $| = 1<br>
><br>
> Mais informações: <a href="http://www.kichwa.com/quik_ref/spec_variables.html" target="_blank">http://www.kichwa.com/quik_ref/spec_variables.html</a><br>
><br>
> 2009/7/7 Ari Arantes <<a href="mailto:ariarantes@gmail.com">ariarantes@gmail.com</a>><br>
>><br>
>> Valeu pelo ajuda, mas o problema é que não pode ter módulo adicional,<br>
>> pois o objetivo é rodar em qualquer servidor, sem necessariamente ter<br>
>> o File::Tail instalado.<br>
>><br>
>> Esse "buffer" que o perl faz, é normal?<br>
>><br>
>> []s,<br>
>><br>
>> Ari<br>
>><br>
>><br>
>> 2009/7/7 Giuliani Deon Sanches <<a href="mailto:giulianisanches@gmail.com">giulianisanches@gmail.com</a>>:<br>
>> > 2009/7/7 Lindolfo "Lorn" Rodrigues <<a href="http://lorn.br" target="_blank">lorn.br</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>><br>
>> >><br>
>> >> Cara, use esse modulo do CPAN você terá mais controle:<br>
>> >><br>
>> >> <a href="http://search.cpan.org/%7Emgrabnar/File-Tail-0.99.3/Tail.pm" target="_blank">http://search.cpan.org/~mgrabnar/File-Tail-0.99.3/Tail.pm</a><br>
>> >><br>
>> >> Qualquer dúvida manda ai<br>
>> >><br>
>> >> 2009/7/7 Ari Arantes <<a href="mailto:ariarantes@gmail.com">ariarantes@gmail.com</a>><br>
>> >>><br>
>> >>> Pessoal,<br>
>> >>><br>
>> >>> Preciso escrever uma rotina para monitorar os acessos ao POP3. Fiz o<br>
>> >>> seguinte:<br>
>> >>><br>
>> >>> #!/usr/bin/perl<br>
>> >>><br>
>> >>> #um exemplo do LOG:<br>
>> >>> #Jul 7 16:46:24 servidor1 pop3d: LOGIN,<br>
>> >>> user=<a href="mailto:usuario1@dominio1.com.br">usuario1@dominio1.com.br</a>, ip=[201.201.201.43], port=[4682]<br>
>> >>><br>
>> >>><br>
>> >>> $arqlog="/var/log/maillog";<br>
>> >>><br>
>> >>> open(LOG, "tail -F $arqlog | grep \"pop3d: LOGIN,\" |");<br>
>> >>> while ($log=<LOG>) {<br>
>> >>> chomp($log);<br>
>> >>> ($lixo, $ip, $lixo) = split('ip=\[', $log);<br>
>> >>> ($ip, $lixo) = split('\]', $ip);<br>
>> >>> print "$ip $log\n";<br>
>> >>> }<br>
>> >>><br>
>> >>> Esse é apenas o começo, depois terá conexão com base de dados, mas<br>
>> >>> tenho uma dúvida.<br>
>> >>><br>
>> >>> Se digito "tail -F /var/log/maillog | grep "pop3d: LOGIN,"" numa<br>
>> >>> sessão ssh, a tela rola muito rápido e de forma constante, agora se<br>
>> >>> rodo pelo perl acima, parece que ele "enche" um buffer e depois manda<br>
>> >>> de uma vez para tela, como se mandasse de tempos em tempos. Como<br>
>> >>> evitar esse "problema de buffer"?<br>
>> >>><br>
>> >>> Obrigado,<br>
>> >>><br>
>> >>> Ari<br>
>> >>> _______________________________________________<br>
>> >>> Cascavel-pm mailing list<br>
>> >>> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>> >>> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>> >><br>
>> >><br>
>> >><br>
>> >> --<br>
>> >> --Lindolfo "Lorn" Rodrigues<br>
>> >> <a href="http://www.slackwarezine.com.br" target="_blank">www.slackwarezine.com.br</a><br>
>> >> <a href="http://lornlab.org" target="_blank">http://lornlab.org</a><br>
>> >> <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
>> >> use Catalyst;<br>
>> >><br>
>> >> _______________________________________________<br>
>> >> Cascavel-pm mailing list<br>
>> >> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>> >> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>> ><br>
>> > Cacilda... tava colando link aqui e aparece a resposta do Lor. Se<br>
>> > passa o dia inteiro com o cliente de e-mail aberto ? :P<br>
>> ><br>
>> > --<br>
>> > <a href="http://twitter.com/giulianisanches" target="_blank">twitter.com/giulianisanches</a><br>
>> > <a href="http://giulianisanches.blogspot.com" target="_blank">giulianisanches.blogspot.com</a><br>
>> > _______________________________________________<br>
>> > Cascavel-pm mailing list<br>
>> > <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>> > <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>> ><br>
>> _______________________________________________<br>
>> Cascavel-pm mailing list<br>
>> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
><br>
><br>
><br>
> --<br>
> --Lindolfo "Lorn" Rodrigues<br>
> <a href="http://www.slackwarezine.com.br" target="_blank">www.slackwarezine.com.br</a><br>
> <a href="http://lornlab.org" target="_blank">http://lornlab.org</a><br>
> <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
> use Catalyst;<br>
><br>
> _______________________________________________<br>
> Cascavel-pm mailing list<br>
> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
><br>
_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
"Though we live in trying times, we're the ones who have to try"<br>