<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Ol&aacute; Solli, como vai?<br>
Ent&atilde;o, inicialmente eu fiz o loop com o while. Mas eu achei melhor (no
sentido de fazer um c&oacute;digo mais enxuto) usar o map.<br>
Desculpe minha ignor&acirc;ncia, mas qual a diferen&ccedil;a entre eu fazer
utlizando o map ou fazer utlizando o while ? Porque voc&ecirc; disse que "j&aacute;
foi muiot mais grave..." ?<br>
<br>
Abra&ccedil;o,<br>
Fl&aacute;vio<br>
<br>
Em 17-09-2010 09:35, Solli Honorio escreveu:
<blockquote
 cite="mid:AANLkTik-v0EWQPDam=C47-rHTA9eGD0RCoo4M7zZOh0v@mail.gmail.com"
 type="cite">Fl&aacute;vio,<br>
  <br>
Ainda n&atilde;o deu uma olhada no resto do teu c&oacute;digo, mas o primeiro ponto
que chama a aten&ccedil;&atilde;o &eacute; voc&ecirc; utilizar o map para fazer o loop. No passado
isto j&aacute; foi muito mais grave, mas o fato &eacute; que o map n&atilde;o &eacute; 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("tcp", 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;">&nbsp; if (!
$ping-&gt;ping($server, 2) ) {</span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; # fa&ccedil;a alguma
coisa e v&aacute; para o pr&oacute;ximo elemento</span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; next</span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp; }</span><br
 style="font-family: courier new,monospace;">
  <br style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp; if (
$obj-&gt;exec( { src =&gt; $_ . ':/path/de/origem', dest =&gt;
$servidor{$_} } ) ) {</span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;
log_info("sincroniza&ccedil;&atilde;o com o servidor $server ocorreu com sucesso") </span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp; else {</span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;
log_error("sincroniza&ccedil;&atilde;o com o servidor $server terminou com erros " .
$obj-&gt;status . ". A saida de erro &eacute; : " . $obj-&gt;err );</span><br
 style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">&nbsp; }</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&oacute;digo acima &eacute; apenas um exemplo. Eu recomendo
fortemente que voc&ecirc; pense numa formata&ccedil;&atilde;o do log que seja f&aacute;cil a
automa&ccedil;&atilde;o da an&aacute;lise do mesmo. No equin&oacute;cio passado eu escrevi sobre
isto (<a moz-do-not-send="true"
 href="http://sao-paulo.pm.org/artigo/2010/LogApplicacao">http://sao-paulo.pm.org/artigo/2010/LogApplicacao</a>).<br>
  <br>
Abra&ccedil;os,<br>
  <br>
Solli M. Hon&oacute;rio<br style="font-family: courier new,monospace;">
  <br>
  <div class="gmail_quote">Em 17 de setembro de 2010 08:44, "Fl&aacute;vio R.
Lopes" <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:flavio.lopes@links.inf.br">flavio.lopes@links.inf.br</a>&gt;</span>
escreveu:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Em
17-09-2010 05:59, Ot&aacute;vio Fernandes escreveu:
    <div>
    <div class="h5"><br>
    <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2010/9/17 "Fl&aacute;vio R. Lopes"&lt;<a moz-do-not-send="true"
 href="mailto:flavio.lopes@links.inf.br" target="_blank">flavio.lopes@links.inf.br</a>&gt;:<br>
&nbsp; <br>
      <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ol&aacute; pessoal.<br>
        <br>
Fiz um programinha que sincroniza diret&oacute;rios entre servidores. Como s&atilde;o<br>
v&aacute;rios servidores, gostaria de gerar tipo de um "log" que ir&aacute; me mostrar<br>
quais as conex&otilde;es (transfer&ecirc;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; &nbsp;Transfer&ecirc;ncia Ok<br>
Servidor server2 =&gt; &nbsp;Transfer&ecirc;ncia Ok<br>
Servidor server3 =&gt; &nbsp;Falhou<br>
(and so on...)<br>
        <br>
O script &eacute; este: git://<a moz-do-not-send="true"
 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 "if", mas n&atilde;o funcionou:<br>
map {<br>
&nbsp; &nbsp;$obj-&gt;exec( { src =&gt; &nbsp;$_ . ':/path/de/origem', dest =&gt;
&nbsp;$servidor{$_} } )<br>
&nbsp; &nbsp; &nbsp;or warn "A transferencia falhou!\n"<br>
} keys %servidor;<br>
        <br>
        <br>
Uma outra d&uacute;vida minha &eacute; a seguinte: Como eu usei a fun&ccedil;&atilde;o "map" para
tratar<br>
os elementos do meu Hash, quando eu disparo o script, ele
automaticamente<br>
tenta fazer a conex&atilde;o com TODOS os servidores listados dentro do Hash
de uma<br>
&uacute;nica vez, ou seja, ele vai abrir tantas conex&otilde;es quantas estiverem
listadas<br>
no Hash. Constatei isto usando o "netstat -n"<br>
        <br>
Daria para fazer um controle, tipo, s&oacute; abrir uma conex&atilde;o, quando uma
outra<br>
for finalizada? Imaginei tamb&eacute;m testar a conex&atilde;o, ou seja, pode ser que
um<br>
determinado server n&atilde;o esteja "no ar"...<br>
        <br>
Voc&ecirc;s podem me dar uma dica?<br>
        <br>
Abra&ccedil;o,<br>
Fl&aacute;vio<br>
        <br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
        <a moz-do-not-send="true" href="mailto:SaoPaulo-pm@pm.org"
 target="_blank">SaoPaulo-pm@pm.org</a><br>
        <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
&nbsp; &nbsp; <br>
      </blockquote>
Fl&aacute;vio,<br>
      <br>
N&atilde;o faz muito sentido ele abrir conex&otilde;es antes de terminar a &uacute;ltima,
visto que<br>
o "map" est&aacute; fazendo uma chamada s&iacute;ncrona para o File::Rsync.<br>
      <br>
Voc&ecirc; tem certeza de que isso est&aacute; vindo do seu script?<br>
&nbsp; <br>
    </blockquote>
    </div>
    </div>
Ol&aacute; Ot&aacute;vio.<br>
Bem, n&atilde;o sei ao certo, pois dei o comando "netstat -n" antes de
disparar o script e n&atilde;o apareciam as conex&otilde;es com os servidores
remotos. Realmente n&atilde;o s&atilde;o listados todos os servidores, por&eacute;m, como
ainda estou testando o script, em alguns servidores ainda n&atilde;o tinham
dados para sincronizar e em outros haviam. Vou refazer os testes aqui.<br>
E quanto a gera&ccedil;&atilde;o de logs, voc&ecirc; poderia me sugerir alguma coisa?<br>
    <br>
    <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
um abra&ccedil;o,<br>
      <br>
&nbsp; <br>
    </blockquote>
    <div>
    <div class="h5"><br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
    <a moz-do-not-send="true" href="mailto:SaoPaulo-pm@pm.org"
 target="_blank">SaoPaulo-pm@pm.org</a><br>
    <a moz-do-not-send="true"
 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>
"o animal satisfeito dorme". - Guimar&atilde;es Rosa<br>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
SaoPaulo-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a></pre>
</blockquote>
<br>
</body>
</html>