\documentclass[a4paper]{article}
\usepackage{fullpage}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{colortbl}
%\usepackage {html}
%\usepackage {hthtml}
\usepackage {hyperref}




\begin{document}
\begin{large}
\noindent
{\bf Prácticas de sistemas de ficheros, servicios y aplicaciones }  \\
Laboratorio de Administración y Gestión de Redes y Sistemas 2017-2018\\
Grado en Ingeniería Telemática  \\
\href
{http://www.urjc.es/universidad/facultades/escuela-tecnica-superior-de-ingenieria-de-las-telecomunicaciones}
{Escuela de Ingeniería de Fuenlabrada}\\
\href
{https://www.urjc.es}
{Universidad Rey Juan Carlos}
\hrule
\end{large}


\vspace{0.5cm}



%\subsection*{Cambios en el documento}


\subsection*{Observaciones}
\begin{itemize}
\item
Escribe la memoria de esta práctica en \verb|~/lagrs/practica05.txt|
\end{itemize}


%--------------------------------------------------------
\section*{Práctica 5.1. Split}
Ahora practicarás con el troceado de ficheros. Supongamos que quieres llevarte a casa 
la máquina virtual 
\verb|cli-ubuntu.16.04.ova|
que está en el directorio
\verb|/var/lib/vms/cli-ubuntu.16.04.amd64.v01|
de los puestos del laboratorio


\begin{enumerate}
\item
Crea en tu máquina local el directorio
\verb|/tmp/<TU_LOGIN>|. Usa este directorio para hacer el resto del ejercicio.

\item
Comprime el directorio de la máquina virtual en un fichero \verb|.tgz|. Ponle el nombre que te parezca adecuado.


\item
Divídelo en trozos de 1 Gb.

\item
Entra uno de los puestos virtuales del laboratorio y crea el directorio
\verb|/tmp/<TU_LOGIN>|


\item
Usando scp, lleva los trozos a la máquina remota, al directorio que acabas de crear.


\item
Reconstruye el directorio.

\item
Usando \verb|md5sum|, comprueba que el fichero es correcto. (Encontrarás
el hash original dentro del fichero leeme.txt)



\end{enumerate}



%%-----------------------------------------------------------------

\section*{Práctica 5.2.  Niveles de ejecución}

En esta práctica te ejercitarás en la configuración de los niveles de ejecución
en System V. Naturalmente, esto solo puede hacerlo el usuario root,
así que usaremos una máquina virtual donde puedes tener este privilegio.
No usaremos contenedores porque están pensados para ejecutar típicamente
un único proceso, así que resulta poco natural añadirles niveles de ejecución.



Crearás unos ficheros para manejar un demonio imaginario.
El demonio en realidad no hará prácticamente nada, pero su estructura será la estándar.

Luego, configurarás la máquina virtual para que el demonio que acabas de preparar
se ejecute cada vez que inicies la máquina.

\begin{enumerate}
 \item
%Crea el script \verb|~/Dropbox/lagrs/practica03/gasd| que simula el control
%del gas de una casa, como en el apartado anterior.
Crea en tu puesto del laboratorio un fichero llamado
\verb|~/lagrs/practica05/aguad|

con el siguiente script


  \begin{footnotesize}
  \begin{verbatim}
#!/bin/bash
log_file=/var/tmp/log.txt
echo -n "Conectando el agua " >> $log_file
date >> ${log_file}
  \end{verbatim}
  \end{footnotesize}

Simulará 
ser un demonio que controla el agua de una casa.
La única forma correcta de invocar a este demonio \emph{de juguete} es hacerlo
sin parámetros, en ese caso añadirá  a 
\verb|/var/tmp/log.txt|  
una línea con
el mensaje \emph{conectado agua} y la fecha.

Como ves, no usa el demonio estándar de logs, pero para este ejercicio nos sirve así.
Normalmente también incluiríamos código para detener el servicio, pero para simplificar
la práctica, omitimos esto.

 \item
Prueba el \emph{demonio} simulado en tu puesto y comprueba que se comporta de la forma esperada.

 \item
Ahora preparara en 
\verb|~/lagrs/practica05/agua|
el script que se encargará de invocar a este demonio. 
Para simplificar, solo entenderá el parámetro \emph{start}

Puedes descargarte un esqueleto a medio terminar en
\url{http://gsyc.urjc.es/~mortuno/agua}

Cuando 
\verb|agua| estén en la máquina virtual (en el directorio 
establecido por los convenios de System V), deberá llamar
al demonio \verb|aguad|, que estará en 
\verb|/usr/local/|

Prepara el script en el puesto del laboratorio, aunque no podrás probarlo
del todo porque obviamente no tienes permisos para escribir en
\verb|/usr/local|
ni en 
\verb|/etc/init.d/|


 \item
En el directorio 
\verb|/var/libs/vms/cli-ubuntu.16.04.amd64.v03|
encontrarás una máquina virtual. Con la orden 
\verb|md5sum|, comprueba que su hash md5 es el mismo que el indicado en
el fichero
\verb|leeme.xt|


\item
Antes de importar la máquina virtual, 
no olvides mantener siempre configurado  VirtualBox 
para que los discos duros virtuales se guarden en \verb|/var/tmp/tulogin| y no
en tu \emph{home} del servidor de cuentas. Recuerda que esto se indica en

\begin{scriptsize}
\begin{verbatim}
Archivo|Preferencias|General|
Carpeta predeterminada de máquinas
\end{verbatim}
\end{scriptsize}

Recuerda que si  borras el directorio de configuración \verb|~/.VirtualBox|, tendrás que repetir este paso.


%Cada vez que te sientes en un puesto nuevo, tendrás que importar las máquina, conectarlas a la red,
%editar el fichero \verb|/home/user/monta| y ejecutarlo.
%%(Indica que pc01 será el servidor y pc03 el cliente).
%Cuando mantengas el puesto, te bastará
%con ejecutar \verb|/home/user/monta|


 \item
Los scripts que has preparado en tu puesto, tendrás que copiarlos en la
máquina virtual. Para que te resulte más sencillo, tienes en la
máquina virtual un script llamado
\verb|/home/user/bin/trae_pract_5.sh|. Edítalo para indicar tu nombre
de usuario en el laboratorio, y úsalo para traerte los ficheros.

 \item
Configura la máquina virtual para que el demonio de prueba se invoque
cada vez que la enciendas.


\end{enumerate}

Observaciones:

\begin{itemize}
\item
Lo importante de este ejercicio es tener claro el uso de los tres ficheros vinculados con un demonio
en System V: el código del demonio, el script que maneja el demonio y el enlace que codifica la posición del
demonio dentro del nivel de ejecución.

\item
Para depurar este ejercicio, una vez dentro de la máquina virtual y antes de reiniciarla:

    \begin{enumerate}
    \item
Comprueba a mano que el demonio se comporta como debe.

    \item
Comprueba a mano que el script llama correctamente al demonio.

    \item
Comprueba a mano que cuando ejecutas el enlace que apunta al script, el demonio se ejecuta.
    \end{enumerate}


\item
Recuerda que la máquina virtual no es persistente y podremos borrarla del laboratorio en cualquier momento.
Sugerencia: edita todos los cambios a tus ficheros en el puesto, y vete copiándolos a la máquina virtual cada vez.
Deja claro en la memoria qué fichero y con qué nombre has dejado en cada sitio de la máquina virtual

\end{itemize}

\section*{Práctica 5.3.  Proxy Socks}

\begin{enumerate}
\item
Haz todo lo necesario para que tu navegador web use una de los puestos virtuales del laboratorio
como Proxy Socks.

\item
Visita \url{https://miip.es}
y comprueba que el comportamiento es el esperado.

\item
Vuelve a configurar tu navegador como estaba. Visita la misma
página y comprueba que el comportamiento es el esperado.
\end{enumerate}


\section*{Práctica 5.4. Túnel inverso}

En este ejercicio probarás el uso de un túnel inverso, que te permitirá acceder
desde cualquier lugar de internet a un servicio en una dirección privada, sin 
necesidad de \emph{port forwarding} (\emph{abrir puertos})


Usarás tres máquinas
\begin{itemize}
\item
Máquina local

Lo ideal es que uses tu portátil, si lo llevas al laboratorio. O tu ordenador de casa si estás en casa. En ambos casos, 
estarás usando una dirección privada. Si no, también puedes usar un puesto del laboratorio. 

\item
Proxy

Uno de los puestos virtuales. Los puertos reservados para tí los ha indicado el profesor en un mensaje en el 
aula virtual.

\item
Maquina remota

Una máquina cualquiera.
\end{itemize}


Haz lo necesario para tener lo siguiente:

\begin{itemize}
\item
\href
{http://www.gsyc.urjc.es/~mortuno/romanserver.py}
{romanserver.py},
corriendo en el puerto TCP 8000 de tu máquina local.



\item
El proxy en un puesto virtual del laboratorio, en alguno de los puertos reservados para tí.

\item
\href
{http://www.gsyc.urjc.es/~mortuno/romanclient.py}
{romanclient.py}
en la máquina remota.

\end{itemize}

Para ello:

    \begin{enumerate}
    \item
Dibuja en papel un diagrama de las máquinas y puertos que estás usando, con sus nombres, direcciones IP
y puertos relevantes (el puerte efímero de los clientes no es relevante)

    \item
Configura proxy y servidor.

    \item
Haz que el cliente lance una petición a la dirección (pública) del proxy y comprueba que responde el servidor.

    \item
Cuando tu maqueta funcione correctamente, haz una foto al diagrama y déjalo en tu cuenta, en
\verb|~/lagrs/practica05/diagrama.jpg|. Si prefieres hacer las cosas un poco mejor, en vez del diagrama hecho 
a mano puedes usar 
una aplicación como \verb|dia|. Es un programa fácil de usar y muy recomendable, puedes pedir al profesor que te enseñe
los fundamentos.
    \end{enumerate}



\end{document}

