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

Daniel de Oliveira Mantovani daniel.oliveira.mantovani at gmail.com
Fri Sep 17 13:12:05 PDT 2010


2010/9/17 "Flávio R. Lopes" <flavio.lopes em links.inf.br>:
> 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..." ?

Cara, leia a thread de novo.
perldoc -f map
perldoc perlsyn


>
> 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> escreveu:
>>
>> Em 17-09-2010 05:59, Otávio Fernandes escreveu:
>>>
>>> 2010/9/17 "Flávio R. Lopes"<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
>>>>
>>>> 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
>>>> 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
>> 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
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
http://www.danielmantovani.com

"If you’ve never written anything thoughtful, then you’ve never had
any difficult, important, or interesting thoughts. That’s the secret:
people who don’t write, are people who don’t think."


More information about the SaoPaulo-pm mailing list