11.2 El comando FTP

Imagen de ElSanto

Comenzaremos hablando del programa ftp (lo que muchos habituales de Internet llaman «el típico ftp de toda la vida», conocido en las Universidades y sencillos terminales en modo texto cuando no se disponía (o no se necesitaba) del entorno gráfico.

Si se necesita transferir un fichero a otra máquina de una red o recuperarlo desde otra (y la red bien puede ser Internet), lo que necesitamos es un programa como ftp. Ftp es un programa sencillo y que viene en cualquier distribución de Linux (en el caso del autor, el paquete instalado es ftp-0.10-2.rpm). Como la mejor manera de aprender es con ejemplos (antes de ver todas las posibilidades que ofrece) supongamos que un compañero nos comenta que es posible obtener la última version de Netscape Communicator en el ftp de la dirección ftp://ftp.juan.es/pub/programas. Sería muy sencillo introducir esta URL (dirección de recurso de Internet) en Netscape Navigator para que éste nos haga de cliente de FTP, pero supongamos que no estamos dentro de XWindow (o que no nos apetece arrancar el navegador, o incluso que nos apetece bajarnos este fichero en varias sesiones, tal y como hacen GetRight y NetVampire para Windows, y que podremos hacer con ftp). Para conseguir nuestro objetivo hacemos:

  [root@localhost sromero]# ftp ftp://ftp.juan.es
  Connected to ftp.juan.es.
  220 Juan FTP server (Version wu-2-41) ready.
  Name (ftp.juan.es:sromero):_

En ese momento el programa habrá accedido a la máquina remota, quien nos está pidiendo que nos identifiquemos (Name) con nuestro nombre de usuario (también podríamos haber entrado con ftp y abrir el servidor con open ftp.juan.es). Si no somos usuarios habituales de dicha máquina (no poseemos ninguna cuenta especial en la misma), tendremos que identificarnos como anonimo (anonymous) y como password o palabra clave dar nuestra dirección de correo electrónico, proceso conocido como login o ftp anónimo, y que nos
permitirá entrar en la máquina remota si ésta tiene permitido el acceso anónimo. Así pues contestamos:

  Name (ftp.juan.es:sromero) anonymous
  331 Guest login ok, send your complete e-mail address as password.
  Password:  sromero@unix-shells.com

Con lo que la máquina remota nos dará acceso a su sistema de ficheros ftp.

  230- ¡Bienvenido al servidor FTP de Juanito!
  230 Guest login ok, access restrictions apply.
  Remote system type is UNIX.
  Using binary mode to transfer files.
  ftp> _

En ese momento nos percatamos de que la terminal de texto se ha quedado en espera de introducción de comandos por nuestra parte. Ante la pregunta de «¿qué puede hacerse ahora?» surge la respuesta: «estamos en un sistema Unix», con lo que nada nos impide (si están dentro de aquel sistema) desplazarnos entre los distintos subdirectorios (ls, cd, etc.):

  ftp> ls
  200 PORT command successful.
  150 Opening ASCII mode data connection for /bin/ls.
  total 6
  drwxr-xr-x   6 root     root    1024 Jul 17 10:47  .
  drwxr-xr-x   6 root     root    1024 Jul 17 10:47  ..
  drwxr-xr-x   2 root     root    1024 Jul 17 10:47  bin
  drwxr-xr-x   2 root     root    1024 Jul 17 10:47  etc
  drwxr-xr-x   2 root     root    1024 Jul 17 10:47  lib
  drwxr-xr-x   2 root     ftp     1024 Jul 31 09:17  pub
  226 Transfer complete.

A la vista de los directorios disponibles, vamos a pub/programas como se nos había especificado.

  ftp> cd pub
  250 CWD command successful.
  ftp> cd programas
  250 CWD command successful.
  ftp> ls
  200 PORT command successful.
  150 Opening ASCII mode data connection for /bin/ls.
  total 3
  drwxr-xr-x   6 root     root         1024 Jul 17  09:18   .
  drwxr-xr-x   6 root     root         1024 Jul 17  09:18   ..
  drwxr-xr-x   6 root     root  10221024 Jul 17  09:18  netscape.rpm

Es posible hacer uso del comando get para descargar un fichero (o mget para múltiples ficheros), pero antes nótese que uno de los mensajes que se leyó al hacer el login fue "Using binary mode to transfer files", lo cual nos indica que hay 2 maneras de bajarse ficheros: los de formato texto y los binarios, y que debemos especificar el modo correcto para bajarse ficheros de cada tipo (el comando ascii especifica formato ascii mientras que binary especifica formato binario). En este caso no tendremos que teclear binary pues el sistema ya nos avisa de que por defecto se descargan ficheros en binario, de modo que ejecutamos get para obtener el fichero:

  ftp> get netscape.rpm

Con lo que obtendremos el fichero en nuestra máquina tras esperar el tiempo necesario y tras el cual nos avisará el propio programa de ftp.