Curso de Introducción a Unix - por F.C.

UTILIDADES PARA TRABAJAR EN RED

ftp

El comando ftp es una interface para que el usuario acceda al File Transfer Protocol, que permite transferir ficheros entre sistemas remotos.

El comando se usa con la siguiente sintaxis:
ftp
ftp hostaname

En el primer caso nos cambia el prompt a ftp> y accedemos a una serie de comandos que son del ftp. Estos comandos, aunque en muchos casos coinciden con los de UNIX, no son comandos de UNIX y realizan funciones diferentes.

En el segundo caso entramos en ftp y nos conectamos directamente a otra máquina que generalmente no será una máquina local.

Los comandos propios de ftp son:
   
   !               cr              macdef          proxy          send
   $               delete          mdelete         sendport       status
   account         debug           mdir            put            struct
   append          dir             mget            pwd            sunique
   ascii           disconnect      mkdir           quit           tenex
   bell            form            mls             quote          trace
   binary          get             mode            recv           type
   bye             glob            mput            remotehelp     user
   case            hash            nmap            rename         verbose
   cd              help            ntrans          reset          ?
   cdup            lcd             open            rmdir
   close           ls              prompt          runique

Para saber lo que hace un comando tecleamos help comand_name (no se usa el comando man).

Los comandos que más se usan con ftp son los siguientes:

open

Si entramos en ftp sin indicar a que máquina nos queremos conectar, podemos abrir posteriormente una conexión con este comando. Por ejemplo:
open ned.ipac.caltech.edu

close

Cierra la conexión que tengamos abierta.

ls

Nos hace un listado del directorio remoto, es decir del directorio en que nos hemos situado en la máquina a la que nos conectamos.

cd

Cambia de directorio en la máquina remota.

mkdir y rmdir

Respectivamente crean y borran un directorio en la máquina remota

get, put, mget, mput

Son unos de los comandos más usados. get y mget sirven par copiar un fichero de la máquina remota a la local. mget permite traer varios ficheros de una sola vez. put y mput son similares pero copian los ficheros de la máquina local a la remota. Veamos algunos ejemplos:
get file1
mget *
mput l1 l2 l3

El primero nos traerá el fichero l1. El segundo nos traerá todos los ficheros. El tercero nos pondrá en la máquina remota los ficheros locales l1 y l2.

prompt

Ejecutando prompt off, desactivamos el modo interactivo que nos pregunta por cada fichero al utilizar mget o mput.

lcd

Cambia el directorio en la máquina local.

delete y rename

Respectivamente borran y renombran ficheros en la máquina remota.

!

Ejecuta un comando UNIX en la shell local. Por ejemplo:
!ls
hace un listado del directorio en que estamos de la máquina local

ascii y bin

Son dos modos de transferencia de datos. ascii se utiliza solamente para ficheros con contenido de texto en formato ASCII. bin se utiliza para ficheros en formato binario (imágenes, ejecutables, etc).

bye

Cierra la conexión y sale de ftp.

Servidores de ftp

Normalmente la mayor parte de centros de investigación, universidades, empresas comerciales, etc, que tengan una red local, van a tener un servidor de ftp al que podemos conectarnos para traer y dejar ficheros, aunque con ciertas restricciones.

Al conectarnos por ftp a una máquina externa, nos va a pedir un login y un password. Si tenemos una cuenta en esa máquina podemos darle nuestro username y nuestro password. Sin embargo lo más usual es utilizar el ftp anonimo, si el sistema en cuestión ofrece este servicio. Cuando nos pide el login introducimos anonymous y en el password damos nuestra dirección completa de mail. Con esto no entraremos realmente en el sistema sino en un área restringida en la que sólo vamos a poder acceder a una serie de directorios. También suele haber diferentes restricciones sobre la posibilidad de dejar ficheros o sobre el tiempo que éstos permanecen sin ser borrados.

El uso del servidor de ftp del IAC está descrito en detalle en las páginas del centro de cálculo. Las características más importantes son:

El nombre es ftp.ll.iac.es
Los usuarios del IAC entran con el login iac y con el password iac.
Los usuarios externos entran con login ftp y como password la dirección de mail
Hay limitaciones en cuanto a espacio (un máximo de 4.5GB) y en cuanto a tiempo (un máximo de 10 dias).

Uso eficiente de ftp

Para que la transferencia de ficheros sea rápida es conveniente preparar los ficheros para la transmisión.

El primer paso es agrupar los ficheros. Si queremos transferir toda una estructura de directorios lo mejor es crear un tarfile de disco. Por ejemplo:
tar -cvf file.tar .

Una vez tenemos el file.tar podemos reducir su tamaño comprimiendolo. De esta forma ahorraremos tiempo en la transmisión. Los comandos más usados para comprimir ficheros son compress y gzip. Por ejemplo:
compress file.tar
gzip file.tar
Los dos comprimen el fichero. En el primer caso añade al nombre del fichero la extensión .Z y en el segundo la extensión .gz. Para descomprimirlo usaríamos:
uncompress file.tar
gunzip file.tar
No hace falta indicar la extensión.

Por último se puede dar un paso más que es codificar el fichero comprimido para que pueda ser transmitido en formato ASCII (esto permitiría además enviarlo por mail como un fichero de texto). Los comando son uuencode y uudecode para codificar y decodificar respectivamente.
uuencode file.tar.Z file.tar.Z > file.tar.uu
uudecode file.tar.uu
El primero codifica file.tar.Z (primer argumento) indicando que al decodificar el fichero se llamará file.tar.Z (segundo argumento que podría ser otro nombre) y es direccionado al fichero file.tar.uu. El segundo comando decodifica creando un fichero cuyo el nombre es el del segundo argumento utilizado en uuencode.

rlogin y telnet

Estos dos comandos nos permiten conectarnos a otra máquina y trabajar en ella, siempre que tengamos cuenta en esa otra máquina. Normalmente se usará telnet para conectarnos a máquinas externas mientras rlogin se usa para conectarnos a una máquina local. En ambos casos la sintaxis es el comando seguido del nombre de la máquina.

Al ejecutar telnet a una máquina remota nos pedirá el login y el password. Le daremos el username y el password correspondiente a la cuenta que tengamos en la máquina remota. Una vez hecho esto ya entramos en la cuenta remota donde se ejecuta su .cshrc y .login correspondiente y podremos empezar a trabajar.

Uno de los usos que probablemente hagamos con mayor frecuencia de telnet es para conectarnos a la red del IAC desde fuera. Por razones de seguridad hay una serie de restricciones para las conexiones desde el exterior. No podremos hacerlo con nuestra cuenta sino cou una cuenta temporal (cuenta externa) que tendremos que pedir al administrador del sistema (ver páginas del centro de cálculo). Con esta cuenta (que tiene un login un y password distinto al de nuestra cuenta en el IAC) sólo podemos entrar a la máquina sal con el comando telnet sal.ll.iac.es. Desde sal ya podemos conectarnos a cualquier otra máquina del IAC. Para llevarnos ficheros de nuestra cuenta desde una cuenta externa tenemos dos opciones: 1) Entrar en una máquina del IAC y desde alli hacer un ftp al servidor de ftp de la máquina desde la que estamos trabajando. 2) Si en la máquina donde trabajamos no está permitido que un usuario externo deje ficheros, tenemos otra opción. Primero entramos en una máquina del IAC. Después ponemos en el servidor de ftp del IAC nuestros ficheros y por último hacemos un ftp desde la máquina en que estamos al servidor de ftp del IAC y copiamos los ficheros.

El comando rlogin lo utilizaremos para conectarnos a una máquina de la red local. Al hacer un rlogin a otra máquina del IAC no nos va a pedir el password, a no ser que queramos entrar como otro usuario (por ejemplo si tenemos dos cuentas). En este caso usamos la opción -l. La sintaxis sería:
rlogin -l username host
username es el nombre de la cuenta en que queremos entrar y host la máquina. Con esta opción nos pedirá el password.

No es necesario entar en una máquina para ver un disco conectado a la máquina remota. Estos discos se pueden ver a través de el directorio net. por ejemplo el disco lisa1 de la máquina lisa lo podemos ver desde cualquier otra máquina como /net/lisa/lisa1. La razón principal para conectarnos a otra máquina será porque necesitemos ejecutar procesos en una máquina más potente o con más memoria.

Para salirnos de una conexión remota bien con telnet o con rlogin ejecutamos el comando exit o logout.

rsh

Este comando nos permite ejecutar un proceso en otra máquina sin necesidad de entrar en ella con rlogin. La standard input, la standard output y la estandard error siguen siendo la terminal de la máquina local. Por ejemplo:
rsh lisa last -10
Ejecutará en la máquina lisa el comando last-10. Este comando con esta opción nos escribe en la terminal los 10 últimos usuarios que se han conectado a la máquina (en este caso la máquina remota lisa), aunque ya no estén conectados.

rcp

Este comando sirve para copiar ficheros que están en una máquina y no son visibles desde otra. Aunque podemos trabajar con la mayor parte de los discos de cualquier máquina sin necesidad de conectarnos a ella, pueden darse algunos casos en que no tengamos acceso a algún fichero de una máquina determinada. Por ejemplo, en el caso que tengamos que leer un disco floppy en una máquina distinta a la que estamos trabajando. No podremos acceder a el floppy si no nos conectamos con rlogin a la máquina. Sin embargo si podríamos copiar los ficheros desde nuestra máquina ejecutando:
rcp host:/floppy/..../* .
host es el nombre de la máquina le siguen : y la ruta de acceso a los ficheros a copiar. Por último el . indica que lo copie al directorio en que estamos.

talk

Este comando nos permite comunicarnos con otro usuario en otra terminal. El texto que escribamos en nuestra terminal aparecerá también en una terminal del usuario con quien queremos hablar, y lo que el otro usuario escriba en su terminal aparecerá en la nuestra. La sintaxis es:
talk username [terminal]
talk username@host [terminal]
La primera opción es para un usuario que este en la misma máquina y la segunda para un usuario en una máquina remota. El terminal es opcional y se usa para especificar en cual queremos que aparezca el texto en caso del que el usuario este en más de una. Por ejemplo:
talk fcabrera@lisa pts/7
Intentará conectar con el usuario fcabrera en la máquina lisa en el terminal pts/7, y aparecerá en el terminal pts/7 un mensaje que le indica a fcabrera que responda con talk al usuario que ejecuto el comando.

write

Este comando permite escribir un mensaje en un terminal de otro usuario que este conectado a la misma máquina. La sintaxis es:
write username [terminal]
Donde terminal es opcional y sirve para indicar en que terminal queremos que aparezca el mensaje en el caso de que este conectado desde varias. El terminal del usuario al que enviamos el mensaje le avisará que va aparecer por su terminal un mensaje y quien y desde que máquina se lo envía. Lo que se teclee en la terminal del que envía el mensaje aparecerá en la terminal del que lo recibe. Por ejemplo:
write fcabrera pts/7
Le avisará a fcabrera que va aparecer un mensaje en el terminal pts/7 enviado por la persona que ejecuta el comando.

mail

mail es el comando para enviar y leer correo electrónico desde la shell. Normalmente el correo electrónico lo vamos a enviar o leer con algún programa que nos permita hacerlo de forma más sencilla como puede ser el mailtool o desde netscape. Sin embargo es conveniente conocer algún programa que permita hacerlo desde la shell, pues no siempre vamos a poder abrir ventanas y tendremos que leerlo desde una terminal de texto. Es por ejemplo el caso que se presenta cuando queremos leer el mail desde fuera del IAC con una cuenta externa (esta conexión no permite abrir ventanas). Hay varios comandos que permiten leer el mail desde la shell. Los más usados son mail, mailx, y pine.

El comando mail es el más básico y suele estar instalado en todos los sistemas. (es el que se va describir a continuación). En mailx se ofrecen más facilidades y opciones al usuario y es similar a mail (puede considerarse como una versión más avanzada). El programa pine nos permite interactuar con él a través de un sistema de menus. En cualquier caso una vez aprendido el funcionamiento de mail es muy fcáil utilizar cualquiera de los otros.

El comando mail funciona en dos modos: para enviar y para recibir, que a continuación se describen.

Enviar mensajes con mail

La sintaxis del comando puede tener las siguientes formas:
mail usuario1 usuario2 usuario3 ....
mail usuario1 usuario2 .... < file

En la primera opción enviaremos un mensaje que escribimos en la terminal. Puede ser enviado a uno o varios usuarios. La forma de indicar el usuario al que va dirigido es con el username si es un usuario local y username@system_name si es a un usuario de otro sistema. Por ejemplo si alguien quiere enviarme un mail desde fuera del IAC tendrá que poner:
mail fcabrera@iac.es

Una vez tecleado el comando, esperará a que introduzcamos el texto. Si queremos introducir un subject ponemos en la primera línea:
Subject: texto_del_subjet
Luego escribimos el texto del mail. Para terminar y que lo envíe ponemos al principio de una línea el caracter . y pulsamos return.

En el segundo ejemplo no introducimos por teclado el texto sino que previamente lo hemos editado en un fichero que se tomará como la standard input.

Si queremos enviar un fichero en formato binario, tenemos que pasarlo previamente a formato ASCII con el comando uuencode como se explicó anteriormente.

Leer mensajes con mail

Para ejecutar el comando mail en modo de recibir, tecleamos mail sin argumentos. El prompt nos cambiara a ? y ahi podremos teclear una serie de comandos propios de mail. Se indican a continuación los más útiles:

?           Muestra una ayuda sobre los comandos
#           Nos muestra el número del mensaje que estamos viendo 
-           Muestra el mensaje anterior
+           Muestra el mensaje siguiente
! cmd       Ejecuta un comando en la shell
a           Nos sitúa en el último mensaje y nos dice si hay nuevos mensajes
d [#]       Borra un mensaje (por defecto en el que estamos)
h a         Muestra todas las cabeceras
h d         Muestra las cabeceras de los mensajes seleccionados para borrar
h [#]       Muestra las cabeceras de los mensajes cercanos al actual
m user      Envía uno de los mensajes a un usuario y lo borra
p           Muestra un mensaje que tiene algun contenido binario
            que normalmente no se muestra
P           Muestra la cabecera completa
q, ^D       Sale del programa
r [args]    Responde un mail y lo puede enviar a otros usuarios[args]
s [files]   Mueve un mensaje a un fichero (por defecto a mbox)
u [#]       Recupera un mensaje borrado 
w [files]   Guarda un mensaje en un fichero sin la cabecera
x           Sale del programa ignorando los cambios que hayamos hecho

(El caracter # representa el numero de un mensaje)

Los mails que recibimos se guardan en el directorio /var/mail/, donde cada usuario tiene un fichero donde se almacenan. Cuando los leemos debemos ir pasandolos a directorios propios para no ocupar demasiado espacio en este directorio común. Cuando los gravamos a los ficheros nuestros, no se borrarán realmente de /var/mail hasta que salgamos del programa mail con una opción que realize los cambios, como q. Si salimos con la opción x no se realizarán los cambios que hayamos hecho, es decir los mails que hayamos borrado seguirán estando. Otros lectores de mail tienen también opciones parecidas.

Listas de mail

Existen en todos los sistemas unas listas de mail, que pueden ser definidas por el administrador del sistema. Estas listas permiten comunicarse entre si a los usuarios que pertenecen a estas listas. Al enviar un mail dirigido a la lista se enviará a todos los usuarios de ésta.

Para ver que listas hay definidas y quien pertenece a ellas podemos enviar un mail a majordomo. Majordomo es un sistema automático que nos permite subscribirnos o borrarnos de una lista pedir información sobre ella etc. Para utilizarlo envía un mail sin subject a majordomo y ponemos un comando en el texto que puede ser para subscribirnos a una lista, para pedir ayuda, etc. Majordomo nos contestará con un mail donde nos informa de los resultados del comando enviado. Por ejemplo, si enviamos un mail con el comando help nos devuelve un mail con información de como funciona majordomo y los comandos que podemos enviar. Enviando el comando lists nos devuelve un mail con las listas que están definidas.