Title: Second practical exam
Course: [15/16] Administración de Sistemas Operativos

INDICE
1.Comentarios y variables
2. Preparativos
3. Script principal
4. Ficheros auxiliares
5. Escritura del código

Recuperación examen práctico de scripting

1. Comentarios y variables

Comentarios y variables que debe incluir el script obligatoriamente:

#!/bin/bash
# $author:
# $date:
# $description

MASTERNAME=master
MASTERIP=172.16.108.1XX
CLIENTNAME=client
CLIENTIP=172.16.108.2XX
DOMAINHOSTS=jedy

DIRAUX=aux
ALUNAME=nombrealumno

Usaremos estas líneas obligatoriamente en el script. Se permite modificar el contenido de las variables para adaptar el script a una práctica concreta.

2. Preparativos

- Crear la carpeta DIRBASE.
- Dentro de la carpeta DIRBASE tendremos todos los ficheros de la práctica.
- Al final entregaremos al profesor un fichero nombrealumno.zip con el contenido competo de DIRBASE.

2. Script principal

- Crear script DIRBASE/install.sh
- Este script se ejecutará de forma NO interactiva, y aceptará los siguientes parámetros:
  - --help: muestra ayuda y explica la forma de uso del script.
  - --master-install: Instala en la máquina donde se ejecute el puppet master y lo configura según se hizo en la práctica de Puppet.
  - --client-install: Instala en la máquina donde se ejecute el puppet cliente y lo configura según se hizo en la práctica de Puppet.
  - --master-accept: Se ejecuta en el master y acepta el intercambio de certificados con el cliente.
  - --client-test: Se ejecuta en el cliente y ejecuta el comando de verificación/comprobación de errores.
- Es necesario que el script compruebe si somos root y avise del problema.

3. Ficheros auxiliares

- Si hacen falta ficheros auxiliares para completar la instalación. O bien, para ayudar al fichero de instalación a realizar su cometido, podemos ponerlos dentro de DIRBASE/DIRAUX.
- Por ejemplo los ficheros: site.pp, classes/nombrealumno.pp

4. Escritura del código

- Las variables van en mayúsculas.
- Los parámetros de entrada deben ser estrictamente los que se piden en el enunciado. Ni más ni menos.
- Deben existir funciones que aglutinen el código de forma lógica. Por ejemplo: show_help, install_master, install_client, accept_client, test_config.
- Debe existir una estructura case que decida la función a ejecutar en función de la entrada recibida.

NOTA: Para modificar una línea concreta dentro del contenido de un fichero podemos usar el comando sed. Ver el siguiente ejemplo.

En Debian/Ubuntu para establecer el parametro startup a 1 en el fichero /etc/default/monit hacemos: sed -i "s/startup=.*/startup=1/" /etc/default/monit