• Publicidad

Transmisión de archivo Excel con Net::FTP

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Transmisión de archivo Excel con Net::FTP

Notapor coltx » 2016-07-26 10:27 @477

Hola, estimados. Tengo el siguiente script que envía a un FTP un archivo Excel, pero por alguna razón que desconozco el archivo Excel llega dañado, si bien llega con el peso correcto, al tratar de abrirlo dice que está dañado. Desde ya, muchas gracias por su ayuda.

#!/usr/bin/perl

use Net::FTP;
use Net::FTP::File;




my $ftp_site = '200.1.1.1';
my $port = '21';
my $ftp_dir = 'nuevo';
my $ftp_user = 'usuario';
my $ftp_password = 'password';
my $dir;
my $file;
my $dirOUT;

my $ftp = Net::FTP->new($ftp_site, Debug => 1, Port => $port, Passive => 0, Binary => 1)
or die "Cannot connect to host $@";
$ftp->binary();
$ftp->login($ftp_user, $ftp_password);
$ftp->cwd($ftp_dir);

$dir="/home/desarrollo/REPORTES/EXCEL/";
$dirOUT="/home/desarrollo/REPORTES/EXCEL/OUT";

opendir(DIR, $dir);
foreach $file (readdir(DIR))
{

if(($file ne ".") && ($file ne "..") && ($file ne "OUT"))
{

$ftp->put("$dir/$file",$file);
print "Transfer file: $file\n";
}


}





$ftp->quit();
coltx
Perlero nuevo
Perlero nuevo
 
Mensajes: 79
Registrado: 2011-09-16 08:01 @376

Publicidad

Re: Transmisión de archivo Excel con Net::FTP

Notapor explorer » 2016-07-26 12:34 @565

La opción Binary, en el new(), no existe (no aparece en el manual), así que creo que te la has inventado ;)

De forma correcta activas la opción binary(), así que la transmisión es correcta.

Yo no veo errores en el código.

Ya que tienes activada la opción de Debug, sería interesante ver la salida de depuración, al menos, del primer archivo, para ver si ocurre algo inesperado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Transmisión de archivo Excel con Net::FTP

Notapor coltx » 2016-08-05 14:07 @630

explorer: esto es lo que arroja con el Debug => 1. Gracias

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Net::FTP>>> Net::FTP(2.79)
Net::FTP>>>   Exporter(5.71)
Net::FTP>>>   Net::Cmd(2.30)
Net::FTP>>>   IO::Socket::INET(1.35)
Net::FTP>>>     IO::Socket(1.38)
Net::FTP>>>       IO::Handle(1.35)
Net::FTP=GLOB(0x3778a78)<<< 220 Bienvenido Server FTP DEVELOP.
Net::FTP=GLOB(0x3778a78)>>> TYPE I
Net::FTP=GLOB(0x3778a78)<<< 530 Please login with USER and PASS.
Net::FTP=GLOB(0x3778a78)>>> USER usuario
Net::FTP=GLOB(0x3778a78)<<< 331 Please specify the password.
Net::FTP=GLOB(0x3778a78)>>> PASS ....
Net::FTP=GLOB(0x3778a78)<<< 230 Login successful.
Net::FTP=GLOB(0x3778a78)>>> CWD /
Net::FTP=GLOB(0x3778a78)<<< 250 Directory successfully changed.
Net::FTP=GLOB(0x3778a78)>>> PASV
Net::FTP=GLOB(0x3778a78)<<< 227 Entering Passive Mode (210,17,172,11,61,62)
Net::FTP=GLOB(0x3778a78)>>> STOR REPORTE.xls
Net::FTP=GLOB(0x3778a78)<<< 150 Ok to send data.
Net::FTP=GLOB(0x3778a78)<<< 226 Transfer complete.
Net::FTP=GLOB(0x3778a78)>>> QUIT
Net::FTP=GLOB(0x3778a78)<<< 221 Goodbye.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
coltx
Perlero nuevo
Perlero nuevo
 
Mensajes: 79
Registrado: 2011-09-16 08:01 @376

Re: Transmisión de archivo Excel con Net::FTP

Notapor explorer » 2016-08-05 15:54 @704

Disculpa, pero esa no es la salida que corresponde a tu programa.

Lo sé porque pone

Net::FTP=GLOB(0x3778a78)<<< 227 Entering Passive Mode (210,17,172,11,61,62)

es decir, que has activado el modo pasivo, pero eso no concuerda con la opción Passive => 0 de tu código.

En cuanto a la transmisión en modo binario, debería salir una línea parecida a esta:

Net::FTP=GLOB(0x3778a78)<<< 200 TYPE is now 8-bit binary

Prueba con algo muy sencillo, por ejemplo con algo que empiece así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl                  
  2. use Net::FTP;
  3.  
  4. my $ftp = Net::FTP->new(
  5.     'servidor',
  6.     Debug       => 1,
  7.     Passive     => 0,
  8. )
  9. or die "Cannot connect to host: $@\n";
  10. $ftp->login('usuario', 'contraseña');
  11. $ftp->binary();
  12. $ftp->close();
Coloreado en 0.004 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: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Transmisión de archivo Excel con Net::FTP

Notapor coltx » 2016-08-08 16:33 @731

explorer, con tu script obtengo esto:

Net::FTP>>> Net::FTP(2.79)
Net::FTP>>> Exporter(5.71)
Net::FTP>>> Net::Cmd(2.30)
Net::FTP>>> IO::Socket::INET(1.35)
Net::FTP>>> IO::Socket(1.38)
Net::FTP>>> IO::Handle(1.35)
Net::FTP=GLOB(0xcdfc10)<<< 220 Bienvenido Server FTP.
Net::FTP=GLOB(0xcdfc10)>>> USER prueba
Net::FTP=GLOB(0xcdfc10)<<< 331 Please specify the password.
Net::FTP=GLOB(0xcdfc10)>>> PASS ....
Net::FTP=GLOB(0xcdfc10)<<< 230 Login successful.
Net::FTP=GLOB(0xcdfc10)>>> TYPE I
Net::FTP=GLOB(0xcdfc10)<<< 200 Switching to Binary mode.
coltx
Perlero nuevo
Perlero nuevo
 
Mensajes: 79
Registrado: 2011-09-16 08:01 @376

Re: Transmisión de archivo Excel con Net::FTP

Notapor explorer » 2016-08-10 07:32 @355

De acuerdo: el usuario se registra y se cambia al modo de transmisión binaria.

Ahora falta enviar el documento. Y comprobar que tiene la misma longitud tanto en origen como en destino.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Transmisión de archivo Excel con Net::FTP

Notapor coltx » 2016-08-24 12:43 @571

Solucionado.... tenía que colocar el binary() después del login(), es decir:

$ftp->login($ftp_user, $ftp_password);
$ftp->binary();
$ftp->cwd($ftp_dir);
coltx
Perlero nuevo
Perlero nuevo
 
Mensajes: 79
Registrado: 2011-09-16 08:01 @376


Volver a Básico

¿Quién está conectado?

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