[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