[Cascavel-pm] Ajuda com tail

Ari Arantes ariarantes em gmail.com
Terça Julho 7 14:17:39 PDT 2009


Testei com STDERR e também com $| = 1, mas o buffer continua.

Consegui solucionar assim:

#!/usr/bin/perl

open(LOG,"tail -F /var/log/maillog |");
while (<LOG>) {
  chomp($_);
  if ($_ =~ /pop3d: LOGIN,/) {
    ($lixo, $ip, $lixo) = split('ip=\[', $_);
    ($ip, $lixo) = split('\]', $ip);
    print "$ip $_\n";
  }
}

Obrigado pela ajuda!

[]s,

Ari



2009/7/7 Lindolfo "Lorn" Rodrigues <lorn.br em gmail.com>:
> Ari,
>
> Ou você usa a saida de erro que não tem buffer
>
> - print "$ip $log\n";
> + print STDERR "$ip $log\n";
>
> Ou você pode setar a variavel de flush para true:
>
> $| = 1
>
> Mais informações: http://www.kichwa.com/quik_ref/spec_variables.html
>
> 2009/7/7 Ari Arantes <ariarantes em gmail.com>
>>
>> Valeu pelo ajuda, mas o problema é que não pode ter módulo adicional,
>> pois o objetivo é rodar em qualquer servidor, sem necessariamente ter
>> o File::Tail instalado.
>>
>> Esse "buffer" que o perl faz, é normal?
>>
>> []s,
>>
>> Ari
>>
>>
>> 2009/7/7 Giuliani Deon Sanches <giulianisanches em gmail.com>:
>> > 2009/7/7 Lindolfo "Lorn" Rodrigues <lorn.br em gmail.com>
>> >>
>> >> Cara, use esse modulo do CPAN você terá mais controle:
>> >>
>> >> http://search.cpan.org/~mgrabnar/File-Tail-0.99.3/Tail.pm
>> >>
>> >> Qualquer dúvida manda ai
>> >>
>> >> 2009/7/7 Ari Arantes <ariarantes em gmail.com>
>> >>>
>> >>> Pessoal,
>> >>>
>> >>> Preciso escrever uma rotina para monitorar os acessos ao POP3. Fiz o
>> >>> seguinte:
>> >>>
>> >>> #!/usr/bin/perl
>> >>>
>> >>> #um exemplo do LOG:
>> >>> #Jul  7 16:46:24 servidor1 pop3d: LOGIN,
>> >>> user=usuario1 em dominio1.com.br, ip=[201.201.201.43], port=[4682]
>> >>>
>> >>>
>> >>> $arqlog="/var/log/maillog";
>> >>>
>> >>> open(LOG, "tail -F $arqlog | grep \"pop3d: LOGIN,\" |");
>> >>> while ($log=<LOG>) {
>> >>>        chomp($log);
>> >>>        ($lixo, $ip, $lixo) = split('ip=\[', $log);
>> >>>        ($ip, $lixo) = split('\]', $ip);
>> >>>        print "$ip $log\n";
>> >>> }
>> >>>
>> >>> Esse é apenas o começo, depois terá conexão com base de dados, mas
>> >>> tenho uma dúvida.
>> >>>
>> >>> Se digito "tail -F /var/log/maillog | grep "pop3d: LOGIN,"" numa
>> >>> sessão ssh, a tela rola muito rápido e de forma constante, agora se
>> >>> rodo pelo perl acima, parece que ele "enche" um buffer e depois manda
>> >>> de uma vez para tela, como se mandasse de tempos em tempos. Como
>> >>> evitar esse "problema de buffer"?
>> >>>
>> >>> Obrigado,
>> >>>
>> >>> Ari
>> >>> _______________________________________________
>> >>> Cascavel-pm mailing list
>> >>> Cascavel-pm em pm.org
>> >>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>> >>
>> >>
>> >>
>> >> --
>> >> --Lindolfo "Lorn" Rodrigues
>> >> www.slackwarezine.com.br
>> >> http://lornlab.org
>> >> http://sao-paulo.pm.org
>> >> use Catalyst;
>> >>
>> >> _______________________________________________
>> >> Cascavel-pm mailing list
>> >> Cascavel-pm em pm.org
>> >> http://mail.pm.org/mailman/listinfo/cascavel-pm
>> >
>> > Cacilda... tava colando link aqui e aparece a resposta do Lor. Se
>> > passa o dia inteiro com o cliente de e-mail aberto ? :P
>> >
>> > --
>> > twitter.com/giulianisanches
>> > giulianisanches.blogspot.com
>> > _______________________________________________
>> > Cascavel-pm mailing list
>> > Cascavel-pm em pm.org
>> > http://mail.pm.org/mailman/listinfo/cascavel-pm
>> >
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
>
>
> --
> --Lindolfo "Lorn" Rodrigues
> www.slackwarezine.com.br
> http://lornlab.org
> http://sao-paulo.pm.org
> use Catalyst;
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


Mais detalhes sobre a lista de discussão Cascavel-pm