9. CARACTERÍSTICAS AVANZADAS DE FTP Este capítulo analizará algunas características avanzadas del servidor FTP tal como se implementó en Multimax. La introducción de FTP en UNIX para usuarios principiantes brindó una introducción elemental a algunas de las características. Si no está familiarizado con los conceptos básicos, consulte ese manual. No es el propósito de revisar esos conceptos básicos aquí. El FTP (programa de transferencia de archivos de Internet) es la interfaz de usuario del Protocolo de transferencia de archivos DARPA. Este programa de utilidad transferirá archivos hacia y desde una computadora remota. Para que los archivos se transfieran desde la computadora local a una computadora remota, se debe establecer una conexión. Esto se puede hacer desde la línea de comandos FTP. La conexión con la computadora remota permanecerá activa hasta que el usuario la finalice. La computadora remota con la que se realizará la conexión se puede especificar en el comando FTP. En este caso, FTP intentará establecer una conexión de inmediato. Si no se especifica la computadora remota, FTP ingresará en su modo de intérprete de comandos y esperará instrucciones; se mostrará un mensaje. FTP tiene una función de ayuda y se pueden enumerar los 58 comandos. También brindará una breve descripción de cada comando. Además, existen páginas de manual en línea a las que se puede acceder mediante el comando man en UMAX. 9.1 Inicialización de FTP en UMAX El término "computadora local" se referirá a Multimax. El término "computadora remota" se referirá a la otra computadora con la que está intentando enviar/recibir archivos. Para los fines de este curso, nos referiremos a la minicomputadora VAX como la computadora remota. Tenga en cuenta que estos procedimientos funcionarán para cualquier computadora conectada a Ethernet y que tenga un servidor FTP. Se puede invocar FTP en la computadora local utilizando la siguiente sintaxis: +===============================================================+ | Command Format: ftp [-v] [-d] [-i] [-n] [-g] [host] | | | | -v = verbose on, forces ftp to show all responses | | from the remote server | | | | -d = enables debugging | | | | -i = turn off interactive prompting during | | multiple file transfers. | | | | -n = disables the "auto-login" feature | | | | -g = disable filename globbing | | | | host = the name of the remote computer | +===============================================================+ NOTA: UMAX (UNIX) distingue entre mayúsculas y minúsculas. Los comandos y las opciones se deben ingresar como se muestra. 9.2 Transferencias de archivos múltiples La sintaxis del comando get múltiple es: +===============================================================+ | Command Format: mget remote-files | | | | remote-files = remote computer wildcard specification | | or | | file1 file2 ... filen | +===============================================================+ La especificación de comodín de la computadora remota se expande en un proceso llamado globbing. Una vez que se completa el globbing, se realiza una operación de obtención en cada nombre de archivo y se transfiere al equipo local. El nombre de archivo es el mismo en ambos equipos. Puede especificar los nombres de archivo que se transferirán separándolos con espacios. Ejemplo: ................................................................. . ftp>mget *.dat;* . ................................................................. Este comando transferirá todas las versiones de los archivos remotos que tengan la extensión de nombre de archivo .dat. Si se especificó la opción -i en la llamada a FTP, los archivos se transferirán automáticamente. Si no se especificó la opción, FTP le preguntará antes de transferir cada archivo. Sesión de Ejemplo: +---------------------------------------------------------------+ | ftp>mget *.dat | | mget change_pass.dat;1? | +---------------------------------------------------------------+ El valor predeterminado es "sí", al presionar (Ret) se enviará el archivo al directorio local. Si no desea que se transfiera este archivo, ingrese n(Ret); luego se le solicitará el siguiente archivo, si existe alguno. 9.3 Función de inicio de sesión automático Es posible que el procedimiento de inicio de sesión se realice automáticamente. Para ello, se requiere un archivo en su directorio de inicio llamado .netrc. El archivo .netrc contiene información de inicio de sesión e inicialización que se utilizará en el proceso de inicio de sesión automático. Se utilizan las siguientes variables y se pueden separar por espacios, tabulaciones o nuevas líneas. nombre de la máquina Este es el nombre de la computadora remota. El proceso de inicio de sesión automático buscará en el archivo .netrc una variable de máquina que coincida con el nombre de la computadora remota en el comando ftp o como argumento del comando abierto. Una vez que se encuentra una coincidencia, las siguientes variables también se procesan hasta que se encuentra el final del archivo o se encuentra otra variable de máquina. nombre de inicio de sesión Este es el nombre de usuario en el sistema remoto. Si esta variable está presente, el proceso de inicio de sesión automático iniciará sesión en la computadora remota con el nombre de usuario indicado. password string Esta es la contraseña que se utilizará al iniciar sesión en el sistema remoto. NOTA: Si esta variable está presente en el archivo .netrc, ftp abortará el proceso de inicio de sesión automático si el archivo .netrc es legible por cualquier persona que no sea el usuario. account string Esto proporciona una contraseña de cuenta adicional. Si está presente, el proceso de inicio de sesión automático proporcionará la cadena como una contraseña adicional si lo requiere el servidor remoto. macdef name Esto define una macro. Esta variable funcionará como el comando ftp macdef. Una macro se define con el nombre especificado, su contenido comienza con la siguiente línea .netrc y continúa hasta una línea nula (2 caracteres de nueva línea). Si se define una macro llamada init, se ejecutará como el último paso del proceso de inicio de sesión automático. Sesión de Ejemplo: +---------------------------------------------------------------+ | $ cat .netrc | | machine erc830 | | login teacher | | password secret1 | | machine erc780 | | login rharding | | password secret2 | | $ | +---------------------------------------------------------------+ Para invocar la función de inicio de sesión automático, escriba el comando ftp e ingrese el nombre de la computadora remota como argumento. Sesión de Ejemplo: +---------------------------------------------------------------+ | $ ftp erc830 | | Connected to erc830. | | 220 erc830 Wollongong FTP Server (Ver 5.0) at Tue Oct 23 | | 331 Password required for rharding. | | 230 User logged in, default directory D_1131:[RHARDING] | | ftp> | +---------------------------------------------------------------+ Si el archivo .netrc es legible por cualquier persona que no sea el usuario, aparecerá el siguiente mensaje de error y no se realizará la conexión a la computadora remota. Sesión de Ejemplo: +---------------------------------------------------------------+ | $ ls -l .netrc | | $ ftp erc830 | | Connected to erc830. | | 220 erc830 Wollongong FTP Server (Ver 5.0) at Tue Oct 23 | | Error - .netrc file not correct mode. | | Remove password or correct code. | | 221 Goodbye. | | ftp> | +---------------------------------------------------------------+ Para corregir este error, cambie el modo del archivo .netrc para que no sea legible por otros usuarios o elimine la contraseña del archivo. Esto es para evitar que un usuario no autorizado pueda leer su contraseña. 9.4 Macros Las macros son una única instrucción que un programa reemplaza por varias instrucciones, generalmente más complejas. El comando ftp para crear una definición de macro es: +===============================================================+ | Command Format: macdef macro-name | | | | macro-name - the name of the macro | +===============================================================+ Después de ejecutar el comando macdef, todas las líneas subsiguientes se almacenan como una macro con el nombre macro_def. Los caracteres de nueva línea o retornos de carro consecutivos finalizan el modo de entrada en la macro. Hay un límite de 16 macros definidas y un límite de 4096 caracteres en todas las macros definidas. Sesión de Ejemplo: +---------------------------------------------------------------+ | ftp> macdef get_files | | open erc780 | | get file_1 | | put result_2 | | close | | ftp> | +---------------------------------------------------------------+ En este ejemplo, las cuatro líneas de la macro se pueden ejecutar simplemente ingresando get_files en el indicador de FTP. La macro solo existirá hasta que se cierre la sesión FTP actual. 9.5 Traducción de nombres de archivo Las convenciones de nombres de archivo difieren de una computadora a otra, y FTP le permitirá traducir el nombre a medida que se transfiere. Una forma es especificar el nombre del archivo tal como existirá en la computadora local. Esto se hace mediante el argumento del comando put o get. +===============================================================+ | Command Format: put local-file [remote-file] | | | | get remote-file [local-file] | +===============================================================+ Si no especifica el archivo remoto (para el comando put) o el archivo local (para el comando get), el nombre será el mismo en la computadora local y en la remota. Esto puede causar un problema si no lo sabe. Hay un comando FTP que permitirá traducir el nombre automáticamente. +===============================================================+ | Command Format: nmap [inpattern outpattern] | +===============================================================+ Si no se proporcionan argumentos, se activará o desactivará el mecanismo de asignación de nombres de archivo. Si se especifican argumentos, los nombres de archivo remotos se asignan durante los comandos mput (múltiples archivos) y put (un solo archivo) que se emiten sin un nombre de archivo remoto especificado. Si se especifican argumentos, los nombres de archivo locales se asignan durante los comandos mget (múltiples archivos) y get (un solo archivo) que se emiten sin un nombre de archivo local especificado. La asignación sigue el patrón establecido por inpattern y outpattern. La creación de plantillas de variables se realiza incluyendo las secuencias "$1", "$2",...."$9 "en inpattern. Todos los demás caracteres se tratan de manera literal y se utilizan para determinar los valores de la variable inpattern de nmap. Por ejemplo, supongamos que inpattern era $1.$2 y el nombre de archivo remoto es mydata.data, $1 tendría el valor mydata y $2 tendría el valor data. outpattern determina el nombre de archivo asignado resultante. Las secuencias "$1", "$2",..."$9", se reemplazan por el valor resultante de la plantilla inpattern. "$0" se reemplaza por el nombre de archivo original. 9.6 Interrupción de transferencias Presione la tecla de interrupción de terminal (normalmente Ctrl-C) para interrumpir una transferencia de archivo. La transferencia de envío se detendrá inmediatamente. Las transferencias de recepción se detendrán cuando FTP envíe un comando ABOR al servidor remoto y descarte cualquier dato adicional que se reciba. Si el servidor remoto no admite el comando de protocolo ABOR, el mensaje ftp> no aparecerá hasta que se haya enviado el archivo solicitado. 9.7 Más comandos de la computadora remota Estos comandos pueden ser útiles cuando se trabaja con los directorios en la computadora remota: +===============================================================+ | Command Format: cdup | +===============================================================+ Este comando FTP cambiará el directorio de trabajo actual de la máquina remota al directorio principal del directorio de trabajo actual. +===============================================================+ | Command Format: delete remote-file | | | | remote-file name of the file to delete | +===============================================================+ Este comando FTP eliminará el archivo especificado. +===============================================================+ | Command Format: mdelete [remote-files] | | | | remote-files names of the files to delete | +===============================================================+ Este comando FTP actúa como una eliminación múltiple. Eliminará todos los archivos especificados. +===============================================================+ | Command Format: mkdir directory-name | | | | directory-name the name of the directory to be created | | on the remote computer. | +===============================================================+ Este comando FTP creará un directorio en la computadora remota. +===============================================================+ | Command Format: rmdir directory-name | | | | directory-name the name of the directory on the remote | | computer that will be removed. | +===============================================================+ Este comando FTP eliminará el directorio especificado. NOTA: Este comando no funcionará con algunos servidores remotos. Trabajo Pŕactico Número 10 Este trabajo práctico reforzará su comprensión de las ideas presentadas en este capítulo. Inicie sesión con el nombre de usuario y la contraseña que le proporcionó el instructor. Cada estudiante debe completar todo el taller. EJERCICIOS DE ESCRITORIO (10 minutos) 1. ¿Qué comando FTP se utiliza para transferir más de un archivo a la vez? ¿Qué comando FTP le dará un mensaje antes de recuperar cada archivo? Sugerencia: hay dos formas 2. ¿Cuál es el nombre del archivo donde se encuentran las variables de inicio de sesión automático? Crédito adicional: ¿Por qué este archivo comienza con un punto (.)? 3. ¿Cómo se puede proteger el archivo en cuestión, el archivo de inicio de sesión automático, contra lecturas no autorizadas? 4. ¿Qué hacen los siguientes comandos FTP? cdup delete (pregunta difícil) mdelete (ídem) mkdir rmdir EJERCICIOS DE COMPUTADORA (30 minutos) 5. Transfiera todos los archivos desde el VAX (erc830) al domax1. Use solo un comando y utilice comodines. El instructor le proporcionará el nombre de usuario y la contraseña para el VAX. 6. Transfiera los archivos desde el VAX y esta vez traduzca los nombres de los archivos a medida que se transfieren. 7. Cree un archivo de inicio de sesión automático para el erc830 y luego realice un inicio de sesión automático en el VAX. 8. Cierre sesión