Introducción
Muchas veces nos vemos en la necesidad de conectarnos a nuestro sitio a través de FTP para realizar ciertas acciones, comunmente mantenimiento en nuestro servidor.
Con este tutorial vamo a aprender a conectarnos con perl por medio de FTP usando el módulo Net::FTP.
Conectarse al servidor
En primer lugar debemos de abrir una conexión con el servidor a través de FTP para realizar todas nuestras acciones. Esto es sumamente sencillo y lo hacemos de la siguiente manera:
#!/usr/bin/perl -w
use strict;
use Net::FTP;
my $username = "miLogin";
my $pwd = "miPwd";
my $ftp = Net::FTP->new("ftp.misitio.com") or die("No se pudo conectar al servidor: $!");
$ftp->login($username,$pwd) or die("Login incorrecto: $!");
#ACCIONES QUE QUEREMOS EJECUTAR EN EL SERVIDOR
$ftp->quit or die("No se puedo desconectar del servidor: $!");
Como vemos conectarnos a un servidor por medio de FTP es realmente sencillo. Pero veamos las lineas más importantes para comprender como nos estamos conectando:
my $ftp = Net::FTP->new("ftp.misitio.com") or die("No se pudo conectar al servidor: $!");
Con esta linea estamos creando un nuevo objeto llamdo "$ftp", llamamos la función "new" del módulo y envíamos la ruta del servidor.
$ftp->login($username,$pwd) or die("Login incorrecto: $!");
Mandamos los datos para accesar, lo que es el "username" y el "password", después de esta linea estaremos conectados al servidor y podremos usar cualquiera de las funciones que veremos más adelante.
$ftp->quit or die("No se puedo desconectar del servidor: $!");
Esta linea es muy importante pues nos desconecta del servidor.
En la siguiente sección veremos que funciones podemos usar para realizar diversas acciones en nuestro servidor.
Acciones con FTP
Ahora veremos que acciones podemos realizar en nuestro servidor con este módulo de perl.
NOTA: Recuerda que puedes usar estas funciones después de haberte conectado a tu servidor. Y recuerda que debes de desconectarte después de realizar todas las acciones deseadas en el servidor.
CAMBIAR DE DIRECTORIO
La gran diferencia que hay entre leer un archivo por FTP que hacerlo de manera local, es que primero debemos de encontarnos en el directorio donde se encuentra el archivo que queremos leer, o el directorio donde queremos salvar un archivo.
Esto lo hacemos de manera sencilla con la siguiente linea:
$ftp->cwd("dir/");
RENOMBRAR UN ARCHIVO
Si queremos renombrar un archivo, primero debemos de cambiarnos al directorio donde esta el mismo y después usamos esta linea:
$ftp->rename("nombre_viejo.txt","nombre_nuevo.txt");
ELIMINAR UN ARCHIVO
Después de cambiar el directorio usamos la siguiente linea:
$ftp->delete("miarchivo");
CREAR UN DIRECTORIO
Para crear un nuevo directorio usamos:
$ftp->mkdir("directorio");
ELIMINAR UN DIRECTORIO
Para eliminar un directorio usamos:
$ftp->rmdir("directorio");
LEER UNA LISTA DE ARCHIVOS
Si queremos leer una lista de archivos que hay dentro de un directorio incluyendo subdirectorios ponemos la siguiente linea que llenará un array con los nombres de archivos del directorio deseado:
my @archivos = $ftp->ls("directorio");
LEER UNA LISTA DE ARCHIVOS DETALLADA
Si queremos leer un listado de archivos detallado podemos hacer de esta manera:
my @archivos = $ftp->dir("directorio");
DESCARGAR UN ARCHIVO
Si queremos leer un archivo del servidor y salvarlo, primero debemos de cambiar al directorio donde se encuentra nuestro archivo y usamos la siguiente linea, donde envíamos primero el nombre del archivo que queremos descargar seguido por él nombre del archivo en donde queremos que se salve:
$ftp->get("archivo_remoto","archivo_local");
SUBIR UN ARCHIVO
Si queremos salvar un archivo en el servidor, primero debemos de cambiarnos al directorio donde queremos guardarlo, y luego usamos la siguiente linea que contiene el nombre del archivo local que queremos guardar, y el nombre del archivo remoto donde lo vamos a guardar.
$ftp->put("archivo_local","archivo_remoto");
ÚLTIMO ARCHIVO GUARDADO
Si queremos saber cual fue el último archivo guardado en el servidor, primer cambiamos de directorio y luego usamos:
my $ultimo_archivo $ftp->unique_name();
FECHA DE MODIFICADO
Si queremos saber cual fue la última fecha de modificación de un archivo, cambiamos de directorio y usamos:
my $ultima_modificacion = $ftp->mdtm("archivo");
TAMAÑO DEL ARCHIVO
Podemos saber el tamaño de un archivo en bytes usando la siguiente linea:
$ftp->size("archivo");
Funciones Avanzadas
Si estas guardando archivos de un sistema operativo Windows a un servidor en UNIX, debes de definir como quieres guardarlo en el servidor UNIX, pues estos pueden estar en "ASCII" o "binario". La diferencia entre ellos, es que en todos los archivos ASCII que pueden ser: archivos de texto, CGI's, etc. si importan las nuevas linea. En cambio en los binarios como las imagenes, esto no es de mayor importancia.
Para poder cambiar la manera en que guardas los archivos debes de usar cualquiera de las siguientes lineas:
$ftp->ascii(); #Para guardar un archivo ASCII
$ftp->binary(); #Para guardar un archivo binario
Últimas Notas
Para mayores detalles acerca de el módulo y otras funciones disponibles, pueden ver la documentación del mismo en ingles en la siguiente dirección:
http://search.cpan.org/~jhi/perl-5.8.0/lib/Net/FTP.pm