• Publicidad

Problema con PUT en NET::FTP

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Problema con PUT en NET::FTP

Notapor aidewuado » 2013-02-27 14:13 @634

Hola estimados, estoy realizando un script para hacer FTP, para poder dejar unos archivos en otro servidor. Al momento de las pruebas quería saber qué pasaba si cortaba la conexión durante la ejecución del script y descubrí que éste se queda colgado.
Mi consulta es si estará mal mi código o hay una configuración de time out que me está faltando.

He aquí mi script de pruebas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  
  2. use strict;
  3.  
  4. use Net::FTP;
  5.  
  6.  
  7.  
  8. my $user = "root";
  9.  
  10. my $pass = "1234";
  11.  
  12.  
  13.  
  14. my $directorio = '/home/ftp';
  15.  
  16.  
  17.  
  18. opendir(DIR,"$directorio");
  19.  
  20. my @ARCHIVOS = readdir(DIR);
  21.  
  22. my $archivo;
  23.  
  24. foreach $archivo(@ARCHIVOS)
  25.  
  26. {
  27.  
  28.         unless($archivo eq "." || $archivo eq ".." )
  29.  
  30.         {
  31.  
  32.                 #print $archivo,"\n";
  33.  
  34.                 my $ftp = Net::FTP -> new("166.166.166.166") or die ("No se pudo establecer conexion: $!");
  35.  
  36.                 $ftp ->login($user,$pass) or die("Login incorrecto: $!");
  37.  
  38.                
  39.  
  40.                 $ftp -> put ("$directorio/$archivo","/home/ftp/$archivo");
  41.  
  42.                 print $archivo."\n";
  43.  
  44.                 sleep(10);
  45.  
  46.                
  47.  
  48.                 $ftp->quit or die("No se puede desconectar del servidor: $!");
  49.  
  50.         }
  51.  
  52. }
  53.  
  54.  
  55.  
  56. closedir(DIR);
  57.  
  58.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
aidewuado
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2012-02-02 15:48 @700

Publicidad

Re: Problema con PUT en NET::FTP

Notapor explorer » 2013-02-27 14:22 @640

El Tiemout por defecto es de 120 segundos, según pone en el manual.

Puedes cambiarlo con una opción en new():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ftp = Net::FTP -> new("166.166.166.166", Timeout => 30) or die ("No se pudo establecer conexion: $!");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con PUT en NET::FTP

Notapor aidewuado » 2013-02-27 14:39 @652

Gracias, explorer, tengo una duda más: ¿cómo puedo hacer que reintente pasar el archivo otra vez?
aidewuado
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2012-02-02 15:48 @700

Re: Problema con PUT en NET::FTP

Notapor explorer » 2013-02-27 18:32 @814

Según el manual, habría que analizar el valor devuelto por put(). Si es un valor 'undef' entonces es que ha ocurrido un error.
En ese caso, lo que hay que hacer es mandar un comando para que borrara el archivo a medio llevar, en el servidor, y volver a hacer un put() para enviarlo otra vez.

Otra opción: usar Net::FTP::AutoReconnect, que se encargará de todo eso. Lo intentará dos veces. Si falla al segundo intento, devolverá un error.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con PUT en NET::FTP

Notapor aidewuado » 2013-03-05 13:39 @610

Gracias, efectivamente, eso hice.
aidewuado
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2012-02-02 15:48 @700


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados