Página 1 de 1

Comando FTP

NotaPublicado: 2008-11-25 14:22 @640
por Gonzalo Zambrana Rocha
Hola,

Tengo un problema con Perl... he realizado un script para transferir archivos vía ftp de un servidor a otro. El hecho es que me da error cuando se ejecuta la instrucción donde especifico la ruta origen.

Es un script muy sencillo, pero el problema es que recién estoy conociendo Perl y no tengo ni idea de cómo solucionar este problema.

Por favor si alguien puede ayudarme, el script es el siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

 use Net::FTP;

$Host_FTP = "10.40.3.161"; # IP del equipo al que me quiero conectar
$User = "ftpuser";
$Acce = "Nuevatel99";
$Lista = "*.txt";
$Orig = "/u01/utl/MREG/RA";
$Dest = "/ITX";

 
#    $source_dir->cwd("$Orig") or die "Cannot change working directory ", $ftp->message;
   
    $ftp = Net::FTP->new("$Host_FTP", Debug => 0) or die "Cannot connect to some.host.name: $@";
   
    $ftp->login("$User","$Acce") or die "Cannot login ", $ftp->message;

    $ftp->cwd("$Orig") or die "Cannot change working directory ", $ftp->message;

    $ftp->binary(); #Para guardar un archivo binario

    my @List_file_FTP = $ftp->ls("$Lista");

# Inicio del ciclo de lectura
    foreach $File_FTP(@List_file_FTP) {
        $ftp->cwd("$Orig");
        $ftp->get("$File_FTP");

        $ftp->delete("$File_FTP");

        $ftp->cwd("$Dest");
        $ftp->put("$File_FTP");
    }

    $ftp->quit;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Saludos cordiales,

Gonzalo

NotaPublicado: 2008-11-25 15:06 @670
por explorer
Bienvenido a los foros de Perl en Español, Gonzalo Zambrana Rocha.

Yo veo que el programa no tiene fallos. Si te sale el mensaje "Cannot change working directory" más un mensaje del servidor, entonces es muy posible que el directorio al que estás intentando acceder, o no exista, o no tengas permisos para acceder, con ese nombre de usuario y contraseña.

Puedes aumentar el valor de Debug para ver en pantalla todo el diálogo entre las máquinas, para ver exactamente qué es lo que se intercambian.

Comando Ftp

NotaPublicado: 2008-11-26 11:31 @521
por Gonzalo Zambrana Rocha
Ok. Muchas gracias

NotaPublicado: 2009-03-30 14:14 @635
por mydaboin
Para no desaprovechar este tema, quisiera saber el código exacto para subir archivo (.doc .xls. ppt .pdf) desde el PC al servidor, usando claro está a Net::FTP.

Ya me fijé en el tutorial pero no logro entender bien el funcionamiento... Gracias por la ayuda que me puedan presentar :P

NotaPublicado: 2009-03-30 14:31 @646
por creating021
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Net::FTP;
use strict;

my $ftp = Net::FTP->new("some.host.name") or die
    "Cannot login ", $ftp->message;
$ftp->binary();
my @ficheros = ( 'fichero1.pdf', 'ficherodos.ppt' );
foreach my $fichero (@ficheros) {
    $ftp->put($fichero) or die "put failed ", $ftp->message;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Se hace con la función put de Net::FTP.
Mira el manual, ahí te explican :wink:
perldoc Net::FTP escribiste:put ( LOCAL_FILE [, REMOTE_FILE ] )
Put a file on the remote server. "LOCAL_FILE" may be a name or a
filehandle. If "LOCAL_FILE" is a filehandle then "REMOTE_FILE"
must be specified. If "REMOTE_FILE" is not specified then the file
will be stored in the current directory with the same leafname as
"LOCAL_FILE".

Returns "REMOTE_FILE", or the generated remote filename if
"REMOTE_FILE" is not given.

NOTE: If for some reason the transfer does not complete and an
error is returned then the contents that had been transferred will
not be remove automatically.