1- El cliente de ftp

Imagen de Epe

Comencemos por el más fácil, el cliente de ftp. Es aquel que te permite conectar desde tu máquina al servidor de ftp. El servicio FTP es un estándar por lo que funcionará con cualquier sistema operativo.

En linux existe por defecto, un cliente de ftp ya listo para ser utilizado. Sencillamente puedes poner:


ftp IPDELSERVIDOR

Puedes utilizar el nombre de un servidor por ejemplo:

ftp ftp.redhat.com

y te conectarás al servidor. Si no tienes un servidor de ftp, en las siguientes secciones veremos cómo instalar uno. Pero te sugiero que de momento sigas leyendo para que comprendas el uso como cliente.

Formas de conexión:

Un cliente se puede conectar fundamentalmente de dos formas:

  1. Entrando de forma anónima (invidado), es lo que se conoce como usuario anonymous
  2. Utilizando un usuario existente (y su clave) en el servidor remoto

La primera variante, conexión mediante usuario anónimo, es muy típica y común, es la que permite a muchas empresas publicar información que pueda ser leída por cualquiera que se conecte como anónimo.

El usuario anónimo no puede realizar muchas actividades, típicamente puede sólo realizar actividades relacionadas con la lectura de archivos (leer, traer archivos). En otras palabras, el usuario anónimo no puede crear, poner, borrar archivos o directorios en el servidor, sólo leeer!

Probemos el usuario anónimo, conectémonos a redhat y veamos algunos comandos:

[root@eperez ~]# ftp ftp.redhat.com
Connected to ftp.redhat.com (209.132.176.30).
220 Red Hat FTP server ready. All transfers are logged. (FTP) [no EPSV]
Name (ftp.redhat.com:curso): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (209,132,176,30,50,69)
150 Here comes the directory listing.
drwxr-xr-x 5 ftp ftp 4096 May 03 2007 pub
226 Directory send OK.
ftp>

En la anterior sección, me he conectado a ftp.redhat.com, con nombre de usuario (anonymous), de clave he puesto mi dirección de email. El usuario anonimo no tiene clave, por eso se le pone tu email de clave.

Al entrar ejecuto dos comandos:
pwd -> Me permite ver el directorio de trabajo, que es /
ls -> me permite listar los contenidos del directorio donde estoy

Como podemos ver, estamos en la raíz del sistema (aparentemente) y sólo hay un directorio llamado pub

Por qué digo aparentemente? Es porque realmente el servicio de ftp enjaula al usuario anónimo dentro de un directorio. Enjaular es la acción de posicionar a un usuario en un directorio y no dejarle salir de él, ni siquiera el usuario se dará cuenta que está en un directorio pues se le hace creer que está en la raíz (/) del sistema.

El usuario anonymous realmente es posicionado en /var/ftp y se le presenta /var/ftp como la raíz, es por esto que al poner pwd ves a /

así que este directorio pub que aparece cuando entramos como anónimo realmente en el sistema de redhat seguramente está en /var/ftp/pub pero como estamos enjaulados le veremos en /pub

Otros comandos de interés como anónimo:

cd directorio -> te permite cambiar a un directorio
get archivo -> te permite traer un archivo hacia tu máquina (desde el servidor remoto)
hash -> te marca un # (hash) por cada kbyte que se transfiera

veamos:


ftp>
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (209,132,176,30,52,177)
150 Here comes the directory listing.
drwxr-xr-x 5 ftp ftp 4096 May 03 2007 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (209,132,176,30,48,12)
150 Here comes the directory listing.
drwxr-xr-x 15 ftp ftp 4096 Dec 22 18:03 redhat
226 Directory send OK.
ftp> cd redhat
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (209,132,176,30,51,56)
150 Here comes the directory listing.
drwxr-sr-x 5 ftp ftp 4096 Mar 11 2007 dst2007
drwxr-xr-x 5 ftp ftp 4096 Sep 30 08:13 gnupro
lrwxrwxrwx 1 ftp ftp 11 Nov 04 19:42 jbdevstudio -> rhdevstudio
drwxr-xr-x 4 ftp ftp 4096 Jan 08 2008 jbeap
drwxr-xr-x 2 ftp ftp 4096 Jul 15 2008 jon
drwxr-xr-x 2 ftp ftp 4096 Feb 14 2005 ldapsdk
drwxr-xr-x 8 ftp ftp 4096 May 15 2006 linux
drwxr-xr-x 2 ftp ftp 4096 Aug 17 2002 mirror-tools
drwxr-xr-x 2 ftp ftp 4096 Dec 22 10:50 ovirt
drwxr-xr-x 3 ftp ftp 4096 Aug 10 2007 rhdevstudio
drwxr-xr-x 2 ftp ftp 4096 Dec 22 18:17 satellite
drwxr-xr-x 3 ftp ftp 4096 Mar 12 2008 soa-p
drwxr-xr-x 3 ftp ftp 4096 Sep 12 2006 support
drwxr-xr-x 2 ftp ftp 4096 Jul 24 2008 thincrust
226 Directory send OK.
ftp> cd linux
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (209,132,176,30,45,132)
150 Here comes the directory listing.
-rw-r--r-- 1 ftp ftp 131 Dec 20 2005 README
drwxr-xr-x 6 ftp ftp 4096 Dec 02 20:37 beta
drwxr-xr-x 6 ftp ftp 4096 Jun 14 2007 eal
drwxrwsr-x 10 ftp ftp 4096 Mar 13 2007 enterprise
drwxr-xr-x 2 ftp ftp 4096 Feb 12 2006 preview
drwxr-xr-x 2 ftp ftp 4096 Dec 03 19:17 rawhide
drwxrwsr-x 4 ftp ftp 4096 Sep 26 19:54 updates
226 Directory send OK.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> get README
local: README remote: README
227 Entering Passive Mode (209,132,176,30,51,199)
150 Opening BINARY mode data connection for README (131 bytes).
#
226 File send OK.
131 bytes received in 0.0125 secs (10.46 Kbytes/sec)
ftp>

En resumen lo que hice anteriormente fue cambiarme a pub, listar, cambiarme a redhat, listar, cambiarme a linux, listar, entonces escribí hash y ejecuté: get README, que lo que hizo fue traer el archivo README que estaba en el último directorio al que entré

Se imprimió un signo de # pues el archivo era menor o igual a 1k, si hubiera sido más grande hubieran aparecido un signo de numero por cada kb que hubiera transferido.

¿Hacia qué directorio en mi máquina local le transferí? Hacia el directorio donde estaba cuando comencé a ejecutar el comando ftp

Si quisiera cambiarme hacia otro directorio localmente (en mi máquina) puedo utilizar el comando lcd, así:

ftp> lcd Desktop
Local directory now /root/Desktop

Fíjate como me cambié a /root/Desktop con el comando lcd (local cd)

Si quieres traer varios archivos a la vez, puedes utilizar el comando mget, voy a entrar unos directorios más adentro y voy a hacer un mget, mira:


ftp> cd enterprise
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (209,132,176,30,54,18)
150 Here comes the directory listing.
drwxrwsr-x 3 ftp ftp 4096 Jul 13 2002 2.1AS
drwxrwsr-x 3 ftp ftp 4096 Dec 02 2002 2.1AW
drwxrwsr-x 3 ftp ftp 4096 Mar 06 2003 2.1ES
drwxrwsr-x 3 ftp ftp 4096 Mar 06 2003 2.1WS
drwxrwsr-x 3 ftp ftp 4096 Oct 22 2003 3
drwxrwsr-x 3 ftp ftp 4096 Jan 31 2005 4
drwxrwxr-x 3 ftp ftp 4096 Mar 13 2007 5Client
drwxrwxr-x 3 ftp ftp 4096 Mar 13 2007 5Server
226 Directory send OK.
ftp> cd 2.1AS
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (209,132,176,30,44,167)
150 Here comes the directory listing.
drwxrwsr-x 3 ftp ftp 4096 Jul 13 2002 en
226 Directory send OK.
ftp> cd en
dir
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (209,132,176,30,42,51)
150 Here comes the directory listing.
drwxrwsr-x 4 ftp ftp 4096 Dec 02 2002 os
226 Directory send OK.
ftp> cd os
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (209,132,176,30,58,121)
150 Here comes the directory listing.
drwxrwsr-x 3 ftp ftp 4096 Jul 13 2002 i386
drwxrwsr-x 3 ftp ftp 4096 Dec 02 2002 ia64
226 Directory send OK.
ftp> cd i386
250 Directory successfully changed.
ftp> dir
227 Entering Passive Mode (209,132,176,30,58,82)
150 Here comes the directory listing.
drwxrwsr-x 2 ftp ftp 57344 Dec 03 19:19 SRPMS
226 Directory send OK.
ftp> cd SRPMS
250 Directory successfully changed.
ftp> mget a*
mget a2ps-4.13b-15.src.rpm? y
227 Entering Passive Mode (209,132,176,30,40,33)
150 Opening BINARY mode data connection for a2ps-4.13b-15.src.rpm (2329615 bytes).
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
####################################################################################
#######
226 File send OK.
2329615 bytes received in 48.8 secs (47.77 Kbytes/sec)
mget adjtimex-1.11-5.src.rpm?

Estaría entonces trayendo a* (todo lo que comience con a)
Mira qué curioso, como este primer archivo tenía varios KB de tamaño me imprimió un # por cada KB... y otra cosa, para cada archivo me pedirá confirmación (y ó n)

Si no quisiera que me pida confirmación lo que debo hacer es antes de hacer el mget, escribir: prompt

Prompt deshabilita la solicitud de confirmación.

mget significa multiple get

Si quisieras cerrar la sesión de ftp sencillamente despídete:

ftp> bye
221 Goodbye.

En otro documento te explicaré cómo acceder via ftp con un usuario normal del sistema.