• Publicidad

Abrir 2 ftp en dos servidores diferentes simultáneamente...

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

Abrir 2 ftp en dos servidores diferentes simultáneamente...

Notapor Lierly Ortega Groero » 2008-01-23 15:48 @700

Hola a todos...

Necesito saber si desde un script de perl se pueden abrir simultáneamente dos sesiones ftp a dos servidores FTP distintos...

Gracias por adelantado.

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

Publicidad

Notapor explorer » 2008-01-23 16:38 @734

Sí que se puede... con un fork() y el Net::FTP...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Lierly Ortega Groero » 2008-01-24 17:30 @771

Hola explorer...

Gracias por la respuesta...

¿Podrías decirme cómo podría hacerlo con el fork? La verdad que nunca he trabajado con él y estuve viendo algunos ejemplos y no cogí bien la idea...

Específicamente lo que quiero hacer es entrar a un sitio FTP y descargar lo que existe y después copiarlo para otro sitio FTP... por acá te muestro el código que tengo y te lo agradecería si me dijeras cómo puedo usar el fork con el...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use Net::FTP;
use Net::SMTP;
# use Array::Compare;

my $files = ''
my $SERVER = "ftp.sitioftp.com";
my %conexiones = (
      'f1'=>{'usuario'=>'user1', 'pass'=>'pass1'},
      'f2'=>{'usuario'=>'user2', 'pass'=>'pass2'},
      'f3'=>{'usuario'=>'user3', 'pass'=>'pass3'},
      'f4'=>{'usuario'=>'user4', 'pass'=>'pass4'},
      'f5'=>{'usuario'=>'user5', 'pass'=>'pass5'},
      'f6'=>{'usuario'=>'user6', 'pass'=>'pass6'}
);

#Abro la conexion FTP;
foreach my $conn (keys %conexiones) {
  my $FTP = Net::FTP->new($SERVER) or die ("No se pudo conectar $!");
  $FTP->login($conn{'usuario'}, $conn{'pass'}) or die ("Login incorrecto: $!");
  my $
  for $file in `$FTP->dir("*.xxx")`; do
    $FTP->get($file);
  done
  $FTP->quit();

}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


De esta forma entro a los sitios FTP y descargo los ficheros *.xxx, quisiera en el mismo ciclo cuando descargue el fichero automáticamente subirlo al sitio FTP determinado...

Gracias por adelantado...

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

Notapor explorer » 2008-01-24 18:59 @833

¡AAAaahhh! Primero dices a la vez y ahora dices 'uno y después otro'.

No te hace falta fork().

Primero tienes que entender el funcionamiento, orientado a objetos, de Net::FTP.

Si te fijas en tu código, estás creando un objeto $FTP por cada una de las %conexiones y bajando los $file.

A propósito... for $file in `$FTP->dir("*.xxx")`; do ... done no es lenguaje Perl, sino shell. Se nota que estabas editando el fichero por ahí.

Bueno, dices que quieres subir los ficheros que has descargado... Después de que termine el bucle foreach() de las %conexiones, tenemos en nuestro directorio todos los ficheros '.xxx'. Bueno, pues solo tienes que crear un nuevo objeto $FTP, hacer $login a la máquina destino y subir los ficheros con un put(). Claro que solo puedes subirles uno a uno, por lo que necesitarás hacer un foreach $file ( <*.xxx> ) para subirles todos.

La respuesta es esa: crear una conexión más, pero en vez de get, hacer put.

Hay otros módulos (como Net::FTP::Recursive) que permite subir o bajar un directorio entero.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
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: No hay usuarios registrados visitando el Foro y 21 invitados