3 - EI/MT-1034

Anuncio
Práctica 9
################################
Herramientas de Internet
desde consola
Informática Básica
Grado en: Ingeniería Informática,
Matemática Computacional
Material de apoyo
E
N estos apuntes se explica el funcionamiento de una serie de herramientas que permiten conectarse remotamente a otro ordenador para ejecutar órdenes en él y transferir ficheros entre dos ordenadores.
Si aprendes a manejar estas herramientas, podrás conectarte desde tu casa a lynx.uji.es, el ordenador en
el cual tienes tu cuenta de trabajo en la Universidad, y ejecutar órdenes de forma remota en dicho sistema.
También aprenderás a transferir ficheros desde lynx.uji.es hasta tu casa y viceversa. Recuerda que lynx es el
servidor que se usa para efectuar conexiones interactivas (SSH, SCP, FTP,. . . ).
Índice
1. Conexión remota
1.1. El cliente telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. El cliente ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
2. Transferencia de ficheros
2.1. El cliente ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. El cliente scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. wget: una herramienta para gestionar descargas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4
5
6
Bibliografía
Documentación sobre wget (en inglés):
<http://www.gnu.org/software/wget/manual/wget.html>
-1-
EI(MT)1002. Informática Básica - 1er curso.
1.
Material de apoyo. Herramientas de Internet desde consola
Conexión remota
Si un ordenador puede ser utilizado por varios usuarios simultáneamente (normalmente se le denomina servidor), es
necesario que cada uno de estos usuarios disponga de un terminal propio desde el que acceder al mismo1 . Es decir, cada
uno de los usuarios necesita como mínimo un teclado (y/o ratón) y una pantalla que le permita introducir las órdenes y
visualizar la salida de las mismas. El servidor es un ordenador remoto (situado a decenas de metros o miles de kilómetros),
mientras que el ordenador desde el cual me conecto es el ordenador local.
Una vez se ha establecido una conexión entre el ordenador local y el ordenador remoto, el usuario puede ejecutar órdenes
en aquél viendo el resultado de la ejecución de éstas en la pantalla del ordenador local. En nuestro caso, nos conectaremos
habitualmente a ordenadores remotos con S.O. de la familia UNIX, por lo que las órdenes que podremos ejecutar son las
mismas que se han visto para el intérprete de órdenes de Linux: ls, cd, mkdir, less, cp, rm, mv, chmod, etc.
¿Es posible ejecutar remotamente aplicaciones “gráficas”, es decir, que abren ventanas en su funcionamiento? La respuesta es sí, pero antes es necesario configurar ciertas cosas que no comentaremos por estar fuera del alcance de los objetivos de
la asignatura. No obstante, debes saber que, en la mayoría de los casos, el administrador de un sistema puede haber preparado algunas de estas “cosas” y que si empleas la opción -X en una conexión con ssh, podrás ejecutar aplicaciones gráficas
remotamente (viendo los gráficos en la pantalla local). Otra posibilidad para ejecutar remotamente programas gráficos es
usar un programa cliente (visualizador) que acceda a un servidor VNC (Virtual Network Computing): además esta solución
es completamente independiente de los Sistemas Operativos y arquitecturas de las máquinas cliente y servidor.
Existen diversas aplicaciones que permiten realizar esta función de conexión remota desde consola. En nuestra asignatura estudiaremos dos de ellas: telnet y ssh. A estas aplicaciones se les denomina clientes ya que permiten acceder,
respectivamente, a dos servicios distintos de conexión remota.
1.1.
El cliente telnet
La aplicación telnet (terminal emulation) se puede ejecutar en un ordenador cualquiera y permite acceder de forma
remota a otro ordenador. Al iniciar la conexión con el ordenador remoto, éste pedirá al usuario que se identifique introduciendo su nombre de usuario (login) y contraseña (password).
Cuando ejecutemos telnet, deberemos indicarle cuál es el nombre de la máquina (o su dirección IP) con la que
deseamos establecer la conexión. Por ejemplo, para conectarse a lynx.uji.es, teclearíamos lo siguiente (en un terminal):
telnet lynx.uji.es
Una vez hecho esto, en la parte inferior de la ventana del terminal se muestran dos líneas en las que se informa sobre el
Sistema Operativo instalado en la máquina remota y, posiblemente2 , algunos datos adicionales sobre el sistema. A continuación, en la línea (o líneas) siguientes pueden mostrarse diversos mensajes (según lo haya configurado el administrador).
Finalmente, la máquina remota pide al usuario que introduzca su nombre en el sistema (login:). Una vez introducido el
nombre del usuario, se solicita la contraseña. Los caracteres tecleados en la contraseña no se visualizan de ningún modo,
ni siquiera como asteriscos (aunque creas que ha dejado de funcionar, los caracteres que introduces sí se están teniendo en
cuenta).
Una vez introducidos tu nombre de usuario y contraseña correctamente, pueden aparecer (según la configuración del
servidor por parte del administrador) uno o varios mensajes de aviso informando de las últimas novedades relacionadas
con el uso de la máquina remota. Una vez se ha accedido a la cuenta, la máquina remota queda a la espera de recibir
órdenes y lo indica mediante el prompt del sistema (generalmente de la forma $, usuario@maquina_$ o algo por el
estilo). Por ejemplo, podemos teclear la orden ls -l para solicitar un listado largo de los contenidos del directorio en el
que estamos situados (para empezar, el directorio personal del usuario). Para terminar la sesión de trabajo con la máquina
remota, finalizando la ejecución de telnet, hay que dar la orden exit.
Recuerda que el principal inconveniente de telnet es que toda la comunicación con el servidor “viaja” en texto plano
(ASCII o alguna de sus extensiones) por la red. Es por ello que alguien malicioso “escuchando” las comunicaciones puede
conseguir acceso a información confidencial. Por ello, ha caído en desuso hoy en día, prefiriéndose alternativas mucho más
seguras como ssh. De hecho, no emplearemos el acceso mediante telnet en las prácticas ya que está deshabilitado en
lynx por cuestiones de seguridad.
1.2.
El cliente ssh
SSH son las siglas de Secure SHell. Éste es un servicio de comunicación entre dos ordenadores, uno local y otro remoto,
que permite servicios de conexión a distancia como los que facilita telnet. Su funcionamiento es exactamente igual que
1 No
van a estar todos “pegándose” por utilizar el mismo teclado y monitor ;-).
puede variar en función de la configuración del servidor.
2 Esto
-2-
EI(MT)1002. Informática Básica - 1er curso.
Material de apoyo. Herramientas de Internet desde consola
el de telnet: la única diferencia radica en que toda la información es codificada y cifrada automáticamente antes de ser
transmitida a través de Internet (tanto en un sentido como en otro), lo cual permite establecer conexiones seguras.
Hay muchos programas basados en SSH. Por ejemplo, uno de los más populares3 tanto en Windows como en Linux
(véase la práctica anterior) es PuTTY. En Linux podemos utilizar la aplicación ssh seguida del nombre de la máquina
con la que se desea establecer la conexión remota y, posiblemente, indicando el nombre del usuario con el que queremos
acceder a la máquina (separado del nombre de la máquina por el carácter @). Si no indicamos el nombre de usuario (esto es
algo opcional) ssh usará el mismo nombre que tiene el usuario que ejecuta el programa en la máquina local. Por ejemplo,
si el usuario al000000 en la máquina local quiere conectarse a lynx.uji.es en la que tiene el mismo nombre de usuario,
teclearía:
ssh lynx.uji.es
Sin embargo, si quisiera conectarse, por ejemplo, a la máquina lepus.uji.es en la que tiene una cuenta con el nombre
de usuario juancar, teclearía:
ssh [email protected]
En ambos casos, se establece una conexión segura con la máquina remota. No obstante, debes tener en cuenta que si el
ordenador local no “conoce” todavía al remoto4 se mostrará un mensaje de este tipo:
The authenticity of host ’lynx.uji.es (150.128.40.114)’ can’t be established.
RSA key fingerprint is ee:ab:d4:b6:fe:0d:90:7b:0f:9f:11:41:4d:5f:6b:14.
Are you sure you want to continue connecting (yes/no)?
Si éste es el caso, debes contestar yes y pulsar Enter . A continuación, el sistema remoto solicita la contraseña. Una vez
introducida ésta correctamente, el usuario ya puede ejecutar órdenes en el ordenador remoto (servidor). Para terminar la
sesión de trabajo con la máquina remota, finalizando la ejecución de ssh, teclearemos la orden exit (como con telnet).
Si se desean ejecutar aplicaciones gráficas, mostrando la salida (los gráficos) en la pantalla del ordenador local, deberemos
emplear la opción -X: ssh -X [email protected] en el ejemplo. Para que esto funcione correctamente, se
requieren dos condiciones:
I El administrador del sistema remoto debe haber configurado el servidor ssh de manera que admita la posibilidad
de usar la opción -X en la conexión (en la mayoría de sistemas Linux, por defecto es así al instalar y configurar el
servicio ssh).
I Tanto el ordenador remoto como el ordenador local deben usar un sistema gráfico compatible: el entorno X-Window
de Unix. Por tanto, la conexión debe establecerse entre máquinas Unix (recuerda que Linux es una variedad más de
Unix).
Además, se aconseja que la conexión entre ambas máquinas sea rápida (un ancho de banda medio de 2-3 Mbps. al
menos). Si no, los gráficos se mostrarán demasiado lentamente como para poder trabajar en el ordenador local.
También quisiéramos indicar otra característica interesante de ssh. ¿Qué ocurre si solamente queremos ejecutar una orden concreta en la máquina remota y no realmente establecer una conexión? Pues, podemos hacerlo. Imagina que solamente
queremos ejecutar la orden ls -l en la máquina lepus.uji.es como el usuario juancar:
ssh [email protected] “ls -l”
La salida del programa sería el resultado de ejecutar la orden ls -l en el directorio personal del usuario juancar en
lepus.uji.es. Si quisiera listar el contenido de un directorio determinado tendría que haber indicado la ruta a ese directorio
desde el directorio personal de juancar. Observa que la orden a ejecutar se escribe siempre entrecomillada tras el nombre
de la máquina remota.
2.
Transferencia de ficheros
FTP (siglas de File Transfer Protocol) es el servicio básico que permite la transferencia de ficheros entre distintos ordenadores conectados a Internet. Como la mayor parte de los servicios de Internet, para hacer uso de él se debe ejecutar
un programa que permita conectarse desde el ordenador local que estamos utilizando al ordenador remoto que proporciona
dicho servicio.
3 Ya
que, además, agrupa el acceso a una serie de servicios entre los que se encuentra, por ejemplo, telnet.
nunca antes se había establecido una conexión con él por parte del usuario.
4 Porque
-3-
EI(MT)1002. Informática Básica - 1er curso.
Material de apoyo. Herramientas de Internet desde consola
Utilizando este servicio se pueden transferir ficheros a/desde ordenadores en los que tenemos una cuenta, es decir, en
los que se nos ha proporcionado un usuario (login) y una contraseña (password). En nuestro entorno de trabajo estos
ordenadores son, por ejemplo, lynx.uji.es para los estudiantes y lepus.uji.es para el personal de administración y servicios
y el profesorado.
Además, también se pueden transferir ficheros entre ordenadores que ofrecen el servicio de FTP anónimo. Estos ordenadores suelen utilizarse para mantener información y software de libre acceso a todo el mundo: en este caso sólo se pueden
realizar transferencias para descargar ficheros desde dichos servidores (por ejemplo, los servidores ftp.suse.com o
ftp.rediris.es). Otra utilidad que se está dando a este servicio es la posibilidad de entrega remota de documentos
como, por ejemplo, la presentación de ponencias a organizadores de congresos científicos para su evaluación: en este otro
caso las transferencias sólo se pueden hacer para enviar ficheros.
En estos apuntes presentaremos algunos de los programas disponibles para Linux5 . Concretamente, estudiaremos la
utilización de los programas de consola ftp y scp.
2.1.
El cliente ftp
Tendrás que ejecutar el programa ftp para Linux desde un terminal. Cuando ejecutes este programa, tendrás que pasarle
como parámetro el nombre de la máquina (equivalentemente, su dirección IP) a la que deseas conectarte. Por ejemplo, si
quieres conectarte al servicio FTP de lynx.uji.es:
ftp lynx.uji.es
La máquina remota responderá solicitando el nombre del usuario en el sistema. Una vez introducido el nombre de usuario,
se solicita la contraseña. Los caracteres tecleados en la contraseña no se visualizan de ningún modo (aunque no se vean en
pantalla, los caracteres que introduces sí se están teniendo en cuenta).
Una vez introducidos tu nombre de usuario y contraseña correctamente, aparecerá, normalmente, un mensaje indicando
el S.O. que posee la máquina a la que nos hemos conectado y el modo en que se van a realizar las transferencias: binario o
ASCII.
$ ftp lynx.uji.es
Connected to lynx.uji.es.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (lynx.uji.es:user): al000000
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
En el modo binario se transfiere un flujo de bits, mientras que en el modo ASCII (texto) se transfiere un flujo de bytes,
siendo cada uno de ellos un carácter del código ASCII o, en la actualidad, de alguna de sus extensiones compatibles, tal como
UTF-8 o ISO_8859-15. El modo ASCII sólo conviene utilizarlo cuando se está seguro de que el fichero que se transfiere
contiene caracteres ASCII o derivados, como por ejemplo es el caso de los ficheros de texto. Si queremos conectarnos a un
FTP anónimo, podemos hacerlo del mismo modo, pero cuando se nos pide el nombre del usuario debemos introducir el del
“usuario anónimo”, anonymous:
$ ftp ftp.uji.es
Connected to lepus.uji.es.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (ftp.uji.es:user): anonymous
331 Please specify the password.
Password:
5 También
existen versiones para Windows de estos programas cliente.
-4-
EI(MT)1002. Informática Básica - 1er curso.
Material de apoyo. Herramientas de Internet desde consola
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
Nótese que la máquina remota pide una contraseña para el “usuario anónimo”: introduciremos nuestra dirección de correo
electrónico como contraseña.
Una vez establecida la conexión ftp hay un conjunto de órdenes bastante amplio que podemos dar. Estas órdenes se
muestran al introducir la orden help. Las más habituales son las siguientes:
bin: establece el modo binario para las transferencias de ficheros que efectuemos con posterioridad.
ascii: establece el modo ASCII para las transferencias de ficheros que efectuemos con posterioridad.
!orden: ! es un carácter “de escape” al intérprete de órdenes local. Con él se pueden ejecutar órdenes en el intérprete de la
máquina local y ver su resultado en pantalla. Esto puede utilizarse para, por ejemplo, listar el contenido del directorio
activo del ordenador local (!ls -l) o para crear uno nuevo en dicho ordenador local.
ls: lista el contenido del directorio activo en el ordenador remoto. La orden dir es equivalente.
cd <directorio>: permite cambiar de directorio en el ordenador remoto.
lcd <directorio>: permite cambiar de directorio en el ordenador local. Equivale a !cd <directorio>.
mkdir <directorio>: permite crear un directorio en el ordenador remoto. Para crear un directorio en el ordenador
local se usaría !mkdir <directorio>.
put <fichero>: transfiere un fichero del ordenador local al ordenador remoto.
mput <ficheros>: transfiere un conjunto de ficheros del ordenador local al ordenador remoto. Los ficheros que se
transfieren son aquellos que se especifican mediante el uso de los comodines * y ? o con cualquier expresión regular,
en general.
get <fichero>: transfiere un fichero del ordenador remoto al ordenador local.
mget <ficheros>: transfiere un conjunto de ficheros del ordenador remoto al ordenador local. Los ficheros que se
transfieren son aquellos que se especifican mediante el uso de los comodines * y ? o con cualquier expresión regular,
en general.
prompt: cuando se utilizan las órdenes de transferencia mget y mput existe la posibilidad de que el programa pregunte
si realmente se desea o no transferir cada uno de los ficheros especificados (modo interactivo) o bien que, sin solicitar ningún tipo de confirmación, se realice la transferencia de todos los ficheros (modo no interactivo). Pues bien,
prompt off pone el modo no interactivo y prompt on activa el modo interactivo.
close: cierra la conexión ftp con la máquina remota pero no termina la ejecución del programa, por lo que se puede
abrir una nueva conexión con la misma u otra máquina empleando la orden open (open ftp.rediris.es, por
ejemplo).
bye: cierra la conexión ftp y finaliza la ejecución del programa.
2.2.
El cliente scp
Éste es un servicio de copia segura: scp (abreviatura de secure copy) permite copiar ficheros entre ordenadores distintos
a través de la red. Utiliza el mismo modo de identificación que ssh (de la forma usuario@maquina) y proporciona su
mismo nivel de seguridad (de hecho, comparten la misma “capa” de cifrado). Por ejemplo, si el usuario al000000 de la
máquina local pretende copiar el fichero practica.pdf en su directorio personal de lynx.uji.es, ejecutaría (no hace falta
especificar usuario en la máquina remota ya que son el mismo):
scp practica.pdf lynx.uji.es:
a lo que lynx contestará pidiendo la contraseña del usuario especificado:
$ scp practica.pdf lynx.uji.es:
[email protected]’s password:
practica.pdf
100% |***************************************| 737 00:00
$
-5-
EI(MT)1002. Informática Básica - 1er curso.
Material de apoyo. Herramientas de Internet desde consola
Fíjate bien en los dos puntos (:) que aparecen tras el nombre del ordenador remoto en la orden tecleada en el ejemplo.
Una vez introducida correctamente la contraseña, se realiza la copia del fichero al ordenador remoto y termina la ejecución
de scp, por lo que vuelve a aparecer el prompt del intérprete de órdenes local. Pero si dicho usuario al000000 pretende
copiarlo al directorio personal del usuario juancar en lepus.uji.es, ejecutaría6 :
scp practica.pdf [email protected]:
Por supuesto, y al igual que con la orden cp, es posible especificar rutas, tanto en origen como en destino:
scp Practicas/IB/practica.pdf [email protected]:Asignaturas/IX01/Internet/
Y, por supuesto, renombrar la copia efectuada en la máquina remota:
scp Practicas/IB/practica.pdf [email protected]:Asignaturas/IX01/Internet/p07.pdf
o incluso emplear comodines:
scp Practicas/IB/*.pdf [email protected]:Asignaturas/IX01/Internet/
También es posible hacer copias del ordenador remoto al local:
scp [email protected]:Pelis/Hulk.avi Pelis/Aver/
Finalmente, quisiéramos indicar que la opción -r funciona igual que con la orden cp, ya que permite copiar recursivamente directorios enteros.
2.3. wget: una herramienta para gestionar descargas
Ésta es una utilidad que sirve para descargar, en general, ficheros de Internet de forma no interactiva usando los servicios
FTP (ftp://) o WEB (http://). En este sentido, wget no es igual que ftp o scp que pueden funcionar en los dos
sentidos. Aunque permite identificación de usuarios, normalmente se emplea para descargar información pública. Para ello,
utiliza los protocolos de dos de los servicios más utilizados en la red para estos menesteres, http y ftp, tal como acabamos
de mencionar.
Esta herramienta se ejecuta en modo texto: no es un programa gráfico7 , ni interactivo, pero tiene gran potencia y flexibilidad. Con wget es posible capturar páginas web (con sus ficheros asociados e incluso directorios ftp) recursivamente,
de manera que se pueden hacer copias completas de sitios web que nos interesen. Esta herramienta se encuentra disponible
tanto para Windows como para Linux y es software libre.
A continuación, se explica mediante sencillos ejemplos el manejo básico de wget (existen un montón de opciones más).
Así, para capturar una única página web, por ejemplo <http://www.uji.es>, sin los gráficos que la acompañan y sin
seguir los enlaces que hay en ella, ejecutaríamos la orden:
wget http://www.uji.es
Si lo que queremos es capturar un sitio web completo, utilizaremos la opción -m (m indica mirror):
wget -m http://www.uji.es
Debemos tener cuidado con esta opción, ya que hará una copia exacta de todo el sitio web en nuestro disco duro.
Si tan sólo nos interesa capturar la página principal del sitio web y seguir un determinado número de niveles a partir
de los enlaces que hay en dicha página, utilizaremos la opción -l (¡ojo! el nivel 0 indica seguir los enlaces que realiza la
propia página y nada más). Por ejemplo, para seguir sólo tres niveles en los enlaces utilizaríamos la orden:
wget -r -l3 http://www.uji.es
Con la opción -r indicamos que deseamos hacer una captura recursiva y con la opción -l3 indicamos que se deben
seguir tres niveles de recursividad. Hay que tener en cuenta que tal y como estamos ejecutando la orden wget se seguirán
todos los enlaces, tanto los que quedan dentro del mismo dominio como los que llevan a otro dominio distinto (fuera del
sitio web original). Para evitar este comportamiento, podemos utilizar la opción -np de modo que no se sigan los enlaces
que apuntan a otros sitios web (sólo se accedería a las páginas web de un directorio siguiendo los enlaces que llevan a
páginas y/o ficheros que están en sus subdirectorios):
6 Se
supone que el usuario al000000 conoce la contraseña del usuario juancar en lepus.
existen interfaces gráficas que facilitan su manejo, tales como gwget en el entorno GNOME —pero no hay versión para GNOME 3— o
WinWGet para Windows.
7 Aunque
-6-
EI(MT)1002. Informática Básica - 1er curso.
Material de apoyo. Herramientas de Internet desde consola
wget -r -l3 -np http://www.uji.es
La opción -k permite convertir los enlaces no relativos en enlaces relativos localmente de modo que los enlaces también
funcionen en el sitio web local que se está copiando.
La información copiada mantiene la misma estructura que tenía en el servidor y se copia en un directorio que se crea en
el ordenador local (en el directorio activo donde estamos situados) con el mismo nombre del sitio web al que accedemos
para copiar8 . En el caso de nuestro ejemplo el directorio se llamará www.uji.es.
Finalmente, wget también puede resultar de gran utilidad cuando queremos descargar un fichero de gran tamaño al
que podemos acceder públicamente. Al tratarse de una descarga que puede tardar bastante tiempo (incluso horas) podría
interrumpirse en algún momento, obligando a recomenzar la descarga cuando nos diésemos cuenta de la circunstancia.
Si usamos la opción -c evitamos tener que comenzar a descargar el fichero desde el principio: si en el directorio donde
estamos situados existe una copia parcial del fichero, la descarga proseguirá desde el punto en el que se interrumpió9 :
wget -c ftp://pirates.movies.org/Movies/Hulk.avi
Observa que, en el anterior ejemplo, estamos accediendo a un servicio público de FTP (FTP anónimo). Y es que wget
“entiende” igualmente el protocolo FTP, de la misma manera que el HTTP y el HTTPS (como los navegadores). Además,
wget permite utilizar comodines para especificar múltiples ficheros a descargar10 . Por ejemplo, si quisiéramos descargar
todos los ficheros AVI del sitio anterior, ejecutaríamos:
wget -c ftp://pirates.movies.org/Movies/*.avi
Para más información, puedes consultar la ayuda del propio programa con la orden wget --help | less o bien
ejecutar la orden man wget. Y no te aficiones demasiado al uso de este potente programa porque igual te puede ocurrir
como a nuestro amigo El “Juanquer” en la tira cómica de la Figura 1.
Figura 1: El “Juanquer” ha encontrado una motivación, al fin, para aprender a usar alguna de las herramientas que empleamos en nuestra
asignatura.
8 Es
posible que aparezca algún directorio más al mismo nivel dependiendo de la “estructura” del sitio web que estamos capturando.
que el servidor permita reanudar descargas a partir de copias parciales, como es el caso de la mayoría de sitios web y ftp.
10 Esto sólo funciona con el protocolo FTP. Debes tener en cuenta que la configuración de algunos servidores FTP puede impedir el funcionamiento
correcto en el uso de comodines.
9 Suponiendo
-7-
Descargar