• Publicidad

Descarga de ficheros de FTP no funciona

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

Descarga de ficheros de FTP no funciona

Notapor Lierly Ortega Groero » 2008-02-04 17:37 @776

Hola a todos...

Estoy haciendo un script en Perl para descargar ficheros de un sitio FTP pero cuando me conecto que doy un dir o ls se queda como bloqueado y al final no me muestra ningún fichero.

Entonces, desde el putty me conecto a un servidor Linux y hago telnet a un FTP, me logueo sin problemas con un usuario y contraseña válidos; al estar dentro pongo dir o ls y se me queda como bloqueado. A continuación muestro lo que sale.

Código: Seleccionar todo
ftp> dir
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.


Aquí está el script de Perl, pero no creo que éste tenga problemas ya que probé con otro sitio ftp en otro lugar y si me funcionó...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

use strict;
use Net::FTP;

my $extens = '*xxx';
my $SERVER = 'ftp.sitioftp.com';
my $name = 'nombre';
my $pass = 'password';

#Abro la conexion FTP;
  my $FTP = Net::FTP->new($SERVER) or die ("No se pudo conectar $!");

  $FTP->login($name, $pass) or die ("Login incorrecto: $!");
   my @archivos = $FTP->dir($extens);
   foreach $file (@archivos){
     my @f = split(/\s+/, $file);
     $FTP->get($f[8]);
   }
   $FTP->quit();
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


pero cuando voy depurando (perl -d fichero.pl) y al pasar la línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 my @archivos = $FTP->dir($extens);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


muestro el valor de @archivos y me da vacío.

Código: Seleccionar todo
main::(fichero.pl:43):    foreach $file (@archivos){
  DB<1> p  @archivos

  DB<2> n


Este mismo programa lo pruebo con otro sitio FTP y me funciona sin problemas, me descarga los ficheros que hay en este sitio.

Por favor, denme alguna idea. ¿Qué puede estar pasando?

Gracias por adelantado...

Saludos...
Lierly Ortega Groero
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-05-31 15:54 @704

Publicidad

Notapor explorer » 2008-02-04 21:05 @920

Prepárate. Puede ser por las siguientes causas:

* El router utilizado en alguno de los dos extremos de la conexión (sí, hay algunos aparatos hardware que tienen problemas con el puerto FTP) La solución es cambiar el software de ese router o cambiarlo. Hace unos años ocurrió con una empresa telefónica, provocando el cuelgue de muchos equipos cuando querías transferir grandes ficheros.

* El cable. Lo he visto en una ocasión. Pero se entiende porque la tarjeta de red era una mierda y perdía muchos paquetes.

* El servidor FTP tiene el listado de directorios prohibido o limitado. Esto es lo más normal.

* Estás intentando obtener un listado de un directorio del que no tienes permisos para hacerlo.

* Hay un cortafuegos en medio que no le gusta lo que estás haciendo.

* El servidor FTP tiene un bug. Esto sucedió hace unos años con el proftpd. Y más recientemente con el vsftpd.

* ...

Suponiendo que no es un problema de hardware, la forma más rápida de encontrar la solución es usando Google, buscando por el nombre del programa servidor ftp y alguna de las palabras "dir" o "ls".

En otras ocasiones se puede solventar cambiando el modo de funcionar con el servidor. Por ejemplo, indicándole que queremos trabajar en modo pasivo, en las ulteriores comunicaciones.

Aquí, Perl tiene poco que intervenir. La prueba es que si lo haces tu mismo también falla.

¡Buena suerte!
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados

cron