[Rio-pm] Problema com Net::FTP

Marco A P D'Andrade mdacwb em gmail.com
Quarta Junho 4 07:09:57 PDT 2008


Gabriel,

Se vc está conseguindo baixar uma quantidade tão elevada, é possivel que o
problema não esteja no codigo, mas em alguma limitação de firewall. Em meu
ambiente de trabalho tenho um problema similar, onde mesmo com fluxo de
dados correndo, um timeout age, limitando o acesso...

Minha melhor sugestão é validar timeouts, e promover a recuperação,
validando arquivos transferidos com sucesso, para que em um retry vc conclua
o download.

Se não me engano timeout vc define ao iniciar a conexão (net Net::FTP) e
para validar os arquivos existentes e concluidos, vc poderia utilizar o
existencia do arquivo/tamanho/timestamp com o metodo ls (ou dir).


http://perldoc.perl.org/Net/FTP.html#CONSTRUCTOR

  Vide timeout e "HASH", este segundo pode lhe permitir acompanhar o
download, e reconhecer eventuais falhas ;)


  Observe o metodo restart também, que aparenta ter o funcionamento do reget
(?) ou algo assim, que permite retomar o download de um arquivo em FTP...
(nao uso isto a alguns anos :D )




Sds,
Marco Antonio


2008/6/4 gabriel lima <gabriellima333 em hotmail.com>:

>  Oi pessoal tudo bem?
>
> Bom, instalei o módulo Net::FTP para baixar uma lista de arquivos,
> de um FTP. Mas em algum momento, quando o script está baixando um
> dos arquivos, ocorre um erro fazendo com o script não responda mais.
>
> São mais ou menos 300 arquivos, com alguns KB cada. Os arquivos
> estão nomeados da seguinte forma:
>
> pub030604.zip
> pub030605.zip
> pub030606.zip
> .
> .
> .
> pub0306300.zip
>
> Eu acho que vendo o código e postando o erro vocês podem me ajudar...
>
> #!/usr/bin/perl
>
>   use strict;
>   use Net::FTP;
>
>   my $dir = "/DIRETORIO";
>
>   my $ftp = Net::FTP->new("ftp.empressa.aqui", Debug => 1)
>                  or die "Erro: ", $ftp->message;
>
>   $ftp->login("$ARGV[0]", "$ARGV[1]")
>                  or die "Erro: ", $ftp->message;
>
>   my @files = $ftp->dir;
>
>   foreach(@files){
>       $_ =~ s/.*\s{1,}//g;
>       next if /ANTERIOR/;
>       print "$_\n";
>       $ftp->get($_) or die "Erro: ", $ftp->message;
>   }
>
>   $ftp->quit;
>
> E o erro que ocorre em um dos arquivos:
> ----------------------------------------------------------------------
> <<< 200 PORT command successful. Consider using PASV
> >>> RETR pub030620.zip
> ----------------------------------------------------------------------
>
> Eu até consigo baixar alguns arquivos (100 aprox.), mas a lista completa
> não, o script trava ali. Não faço ideia do que está acontecendo. Se alguem
> me ajudar eu agradeço.
>
> E me desculpe pelo código, eu sei que está horrivel,
> mas com o tempo eu prometo melhorar =P
>
> Até mais pessoal!
>
>
> ------------------------------
> Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o
> Messenger! É GRÁTIS! <http://www.msn.com.br/emoticonpack>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/rio-pm/attachments/20080604/b11e0d67/attachment.html 


Mais detalhes sobre a lista de discussão Rio-pm