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
Cierra la conexión que tengamos abierta.
lsNos hace un listado del directorio remoto, es decir del directorio en que nos hemos situado en la máquina a la que nos conectamos.
cdCambia de directorio en la máquina remota.
mkdir y rmdirRespectivamente 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.
promptEjecutando prompt off, desactivamos el modo interactivo que nos pregunta por cada fichero al utilizar mget o mput.
lcdCambia el directorio en la máquina local.
delete y renameRespectivamente 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
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).
byeCierra la conexión y sale 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.esPara 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.
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.
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.
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.
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.
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 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.
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.
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.
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.