Flávio,<br><br>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.<br>

<br>A melhor alternativa seria utilizar o while ou o for, tipo :<br><br><span style="font-family: courier new,monospace;">&lt;codigo&gt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">$ping = Net::Ping-&gt;new(&quot;tcp&quot;, 22);</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">while ( my $server = key %servidores ) {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  if (! $ping-&gt;ping($server, 2) ) {</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    # faça alguma coisa e vá para o próximo elemento</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    next</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">  }</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  if ( $obj-&gt;exec( { src =&gt; $_ . &#39;:/path/de/origem&#39;, dest =&gt; $servidor{$_} } ) ) {</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    log_info(&quot;sincronização com o servidor $server ocorreu com sucesso&quot;) </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  else {</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">    log_error(&quot;sincronização com o servidor $server terminou com erros &quot; . $obj-&gt;status . &quot;. A saida de erro é : &quot; . $obj-&gt;err );</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">  }</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">} </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&lt;/codigo&gt;</span><br>

<br>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 (<a href="http://sao-paulo.pm.org/artigo/2010/LogApplicacao">http://sao-paulo.pm.org/artigo/2010/LogApplicacao</a>).<br>

<br>Abraços,<br><br>Solli M. Honório<br style="font-family: courier new,monospace;"><br><div class="gmail_quote">Em 17 de setembro de 2010 08:44, &quot;Flávio R. Lopes&quot; <span dir="ltr">&lt;<a href="mailto:flavio.lopes@links.inf.br">flavio.lopes@links.inf.br</a>&gt;</span> escreveu:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Em 17-09-2010 05:59, Otávio Fernandes escreveu:<div><div></div><div class="h5"><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
2010/9/17 &quot;Flávio R. Lopes&quot;&lt;<a href="mailto:flavio.lopes@links.inf.br" target="_blank">flavio.lopes@links.inf.br</a>&gt;:<br>
   <br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Olá pessoal.<br>
<br>
Fiz um programinha que sincroniza diretórios entre servidores. Como são<br>
vários servidores, gostaria de gerar tipo de um &quot;log&quot; que irá me mostrar<br>
quais as conexões (transferências) que deram certo e quais falharam.<br>
Por exemplo, gostaria de gerar um arquivo de log que me mostrasse mais ou<br>
menos o seguinte:<br>
<br>
Servidor server1 =&gt;  Transferência Ok<br>
Servidor server2 =&gt;  Transferência Ok<br>
Servidor server3 =&gt;  Falhou<br>
(and so on...)<br>
<br>
O script é este: git://<a href="http://gist.github.com/583692.git" target="_blank">gist.github.com/583692.git</a><br>
<br>
Tentei jogar esta parte (abaixo) dentro de um &quot;if&quot;, mas não funcionou:<br>
map {<br>
    $obj-&gt;exec( { src =&gt;  $_ . &#39;:/path/de/origem&#39;, dest =&gt;  $servidor{$_} } )<br>
      or warn &quot;A transferencia falhou!\n&quot;<br>
} keys %servidor;<br>
<br>
<br>
Uma outra dúvida minha é a seguinte: Como eu usei a função &quot;map&quot; para tratar<br>
os elementos do meu Hash, quando eu disparo o script, ele automaticamente<br>
tenta fazer a conexão com TODOS os servidores listados dentro do Hash de uma<br>
única vez, ou seja, ele vai abrir tantas conexões quantas estiverem listadas<br>
no Hash. Constatei isto usando o &quot;netstat -n&quot;<br>
<br>
Daria para fazer um controle, tipo, só abrir uma conexão, quando uma outra<br>
for finalizada? Imaginei também testar a conexão, ou seja, pode ser que um<br>
determinado server não esteja &quot;no ar&quot;...<br>
<br>
Vocês podem me dar uma dica?<br>
<br>
Abraço,<br>
Flávio<br>
<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
     <br>
</blockquote>
Flávio,<br>
<br>
Não faz muito sentido ele abrir conexões antes de terminar a última, visto que<br>
o &quot;map&quot; está fazendo uma chamada síncrona para o File::Rsync.<br>
<br>
Você tem certeza de que isso está vindo do seu script?<br>
   <br>
</blockquote></div></div>
Olá Otávio.<br>
Bem, não sei ao certo, pois dei o comando &quot;netstat -n&quot; 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.<br>


E quanto a geração de logs, você poderia me sugerir alguma coisa?<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
um abraço,<br>
<br>
   <br>
</blockquote><div><div></div><div class="h5">
<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa<br>