[SP-pm] Como testar conexões remotas?

"Flávio R. Lopes" flavio.lopes at links.inf.br
Fri Sep 17 13:04:40 PDT 2010


Olá Solli, como vai?
Então, inicialmente eu fiz o loop com o while. Mas eu achei melhor (no 
sentido de fazer um código mais enxuto) usar o map.
Desculpe minha ignorância, mas qual a diferença entre eu fazer utlizando 
o map ou fazer utlizando o while ? Porque você disse que "já foi muiot 
mais grave..." ?

Abraço,
Flávio

Em 17-09-2010 09:35, Solli Honorio escreveu:
> Flávio,
>
> Ainda não deu uma olhada no resto do teu código, mas o primeiro ponto 
> que chama a atenção é você utilizar o map para fazer o loop. No 
> passado isto já foi muito mais grave, mas o fato é que o map não é 
> para fazer este tipo de loop.
>
> A melhor alternativa seria utilizar o while ou o for, tipo :
>
> <codigo>
> $ping = Net::Ping->new("tcp", 22);
>
> while ( my $server = key %servidores ) {
>   if (! $ping->ping($server, 2) ) {
>     # faça alguma coisa e vá para o próximo elemento
>     next
>   }
>
>   if ( $obj->exec( { src => $_ . ':/path/de/origem', dest => 
> $servidor{$_} } ) ) {
>     log_info("sincronização com o servidor $server ocorreu com sucesso")
>   else {
>     log_error("sincronização com o servidor $server terminou com erros 
> " . $obj->status . ". A saida de erro é : " . $obj->err );
>   }
> }
> </codigo>
>
> Lembrando que o código acima é apenas um exemplo. Eu recomendo 
> fortemente que você pense numa formatação do log que seja fácil a 
> automação da análise do mesmo. No equinócio passado eu escrevi sobre 
> isto (http://sao-paulo.pm.org/artigo/2010/LogApplicacao).
>
> Abraços,
>
> Solli M. Honório
>
> Em 17 de setembro de 2010 08:44, "Flávio R. Lopes" 
> <flavio.lopes em links.inf.br <mailto:flavio.lopes em links.inf.br>> escreveu:
>
>     Em 17-09-2010 05:59, Otávio Fernandes escreveu:
>
>         2010/9/17 "Flávio R. Lopes"<flavio.lopes em links.inf.br
>         <mailto:flavio.lopes em links.inf.br>>:
>
>             Olá pessoal.
>
>             Fiz um programinha que sincroniza diretórios entre
>             servidores. Como são
>             vários servidores, gostaria de gerar tipo de um "log" que
>             irá me mostrar
>             quais as conexões (transferências) que deram certo e quais
>             falharam.
>             Por exemplo, gostaria de gerar um arquivo de log que me
>             mostrasse mais ou
>             menos o seguinte:
>
>             Servidor server1 =>  Transferência Ok
>             Servidor server2 =>  Transferência Ok
>             Servidor server3 =>  Falhou
>             (and so on...)
>
>             O script é este: git://gist.github.com/583692.git
>             <http://gist.github.com/583692.git>
>
>             Tentei jogar esta parte (abaixo) dentro de um "if", mas
>             não funcionou:
>             map {
>                $obj->exec( { src =>  $_ . ':/path/de/origem', dest =>
>              $servidor{$_} } )
>                  or warn "A transferencia falhou!\n"
>             } keys %servidor;
>
>
>             Uma outra dúvida minha é a seguinte: Como eu usei a função
>             "map" para tratar
>             os elementos do meu Hash, quando eu disparo o script, ele
>             automaticamente
>             tenta fazer a conexão com TODOS os servidores listados
>             dentro do Hash de uma
>             única vez, ou seja, ele vai abrir tantas conexões quantas
>             estiverem listadas
>             no Hash. Constatei isto usando o "netstat -n"
>
>             Daria para fazer um controle, tipo, só abrir uma conexão,
>             quando uma outra
>             for finalizada? Imaginei também testar a conexão, ou seja,
>             pode ser que um
>             determinado server não esteja "no ar"...
>
>             Vocês podem me dar uma dica?
>
>             Abraço,
>             Flávio
>
>             _______________________________________________
>             SaoPaulo-pm mailing list
>             SaoPaulo-pm em pm.org <mailto:SaoPaulo-pm em pm.org>
>             http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>         Flávio,
>
>         Não faz muito sentido ele abrir conexões antes de terminar a
>         última, visto que
>         o "map" está fazendo uma chamada síncrona para o File::Rsync.
>
>         Você tem certeza de que isso está vindo do seu script?
>
>     Olá Otávio.
>     Bem, não sei ao certo, pois dei o comando "netstat -n" antes de
>     disparar o script e não apareciam as conexões com os servidores
>     remotos. Realmente não são listados todos os servidores, porém,
>     como ainda estou testando o script, em alguns servidores ainda não
>     tinham dados para sincronizar e em outros haviam. Vou refazer os
>     testes aqui.
>     E quanto a geração de logs, você poderia me sugerir alguma coisa?
>
>         um abraço,
>
>
>
>     _______________________________________________
>     SaoPaulo-pm mailing list
>     SaoPaulo-pm em pm.org <mailto:SaoPaulo-pm em pm.org>
>     http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
>
> -- 
> "o animal satisfeito dorme". - Guimarães Rosa
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm

-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100917/f4b0ae22/attachment.html>


More information about the SaoPaulo-pm mailing list