Scripts de sistemas en python
Laboratorio de Administración y Gestión de Redes y Sistemas 2017-2018
Grado en Ingeniería Telemática
Escuela Técnica Superior de Ingeniería de Telecomunicación
Universidad Rey Juan Carlos


Cambios en el documento

Práctica 3.1. Acceso a un listado

El objetivo de esta práctica es que te familiarices con la librería subprocess para acceder a la shell de Linux desde python.

Crea el directorio ~/lagrs/practica03

Escribe un script en python con el nombre ~/lagrs/practica03/mi_ls.py. Incluye un comentario en las primeras líneas tu nombre, apellidos y login.

Debe mostrar un listado con el nombre de los ficheros ordinarios del directorio actual y su tamaño. Aunque hay funciones específicas de python para manejar ficheros, usa subprocess.

Práctica 3.2. Creación de un bot de telegram

  1. Instala Telegram en tu móvil, en tu tablet o en tu portátil.

  2. Crea un bot de telegram, con el nombre que quieras.

  3. Escribe un programa con el nombre ~/lagrs/practica03/hola_telegram.py que envíe un mensaje de tipo hola mundo a tu cliente Telegram y luego entre en un bucle infinito atendiendo a los mensajes que reciba (de cualquier usuario). Por cada mensaje recibido, envía una respuesta cualquiera al cliente y muestra todo en la pantalla del servidor.

Por motivos de seguridad, el token no puede estar en el fuente, como ningún otro secreto. Una vez probado el program el programa, reemplaza el token por la cadena XXXXXXX o similar.

Práctica 3.3. Shell desde telegram

Ahora programarás un bot de telegram que aceptará del usuario una orden de shell, la ejecutará y responderá con el resultado de la ejecución. Escribe un programa con el nombre ~/lagrs/practica03/telegram_shell.py, según la siguiente especificación:

Una vez probado el programa, cifra el token con gpg. Vuelve a descifrarlo cuando quieras usarlo.

Práctica 3.4 Cron

En esta práctica probarás el uso básico de cron. Los puestos físicos del laboratorio no tienen cron instalado, ya que son máquinas que no están siempre encendidas. Haz el ejercicio en uno de los puestos virtuales del laboratorio (alpha, beta, gamma, delta, epsilon, etc) donde sí hay cron.

Describe brevemente las tablas de cron que usas, en el fichero ~/lagrs/practica03.txt

  1. Comprueba que cron funciona: Programa en el host una tarea que ejecute cada minuto touch sobre el fichero /tmp/test_cron_tulogin (donde tulogin es tu login en el laboratorio). Consulta la fecha de este fichero, si todo está en orden, borra esta entrada de la tabla de cron

  2. Escribe el script ~/lagrs/practica03/escribe_log en bash o python que añada la cadena probando cron, junto con la fecha y la hora, al fichero ~/lagrs/log.txt Como en cualquier log, debes añadir al final, sin borrar los mensajes precedentes.

    No le pongas extensión al script, ni .sh ni .py.

    Puedes usar el mandato de shell date

  3. Programa una tarea que ejecute el script anterior cada minuto. Cuando veas que funciona, modifica la entrada para que se ejecute a las 9 de la mañana, de lunes a viernes.

Práctica 3.5 Monitorización de directorios

El propósito de este ejercicio es programar un script que vigile una serie de directorios, y nos envíe un mensaje de telegram si el número de ficheros que contiene alguno de ellos excede cierto límite. Tambien si el tamaño de alguno de los directorios excede cierto límite.

Escribe un programa con el nombre ~/lagrs/practica03/monitor.py, según la siguiente especificación:

Práctica 3.6 Ejecución remota de scripts

Ahora ejecutarás el programa monitor.py de la práctica anterior, pero no en una máquina, sino en una serie de máquinas remotas, de forma automática, usando ssh.

En primer lugar, modifica ~/lagrs/practica03/monitor.py para que cada vez que envíe un mensaje, incluya en el propio mensaje el nombre de la máquina desde donde lo envía.

Escribe el programa ~/lagrs/practica03/monitoriza_todos.py, según la siguiente especificación:

  1. En las primeras líneas del script definirá la constante MAQUINAS, que contendrá una lista de nombres de máquinas, y una constante COMANDOS, que contendrá una lista de órdenes.

    Ejemplo:

    MAQUINAS = ["alpha01", "alpha02"]
    COMANDOS = ["touch /tmp/log_monitoriza_jperez.txt" , "~/lagrs/practica03/monitor.py --force-telegram"]
      
  2. Para cada una de las máquinas indicadas en la constante MAQUINAS

    Observa que esto es una versión similar aunque mucho más básica de lo que se consigue con herramientas como puppet o ansible, especialmente esta última, que también está basada en ssh.

Revisión de los nombres

Ejecuta el script ~mortuno/revisa practicas lagrs para comprobar que los nombres de los ficheros son correctos.