educación, informática y demás

Ejercicios 07 – Shell Scripts

El objetivo de este documento es que el lector practique con dos tipos de ejercicios:

  1. Propuestas de scripts bien detallados.
  2. La solución de problemas más o menos complejos con el que se puede encontrar un administrador de sistemas utilizando scripts.

Para sacar el máximo partido al documento, se recomienda leer el apartado donde se presentan los contenidos en el material didáctico proporcionado en el sitio web de educatica o de terceros autores.

01 – Función muestraMenuPrincipal

Crea una función llamada muestraMenuPrincipal que muestre un menú en pantalla con las siguientes opciones:

Menú principal

1 – Opciones sobre usuarios

2 – Opciones sobre ficheros

3 – Copias de seguridad

0 – Salir

La función no recibirá ningún parámetro ni devolverá ningún valor de retorno. Tan solo muestra la información de un menú principal

02. – Función eligeOpcion

Crea una función llamada eligeOpcion que recibe dos parámetros numéricos. El primer parámetro será el valor inicial y el segundo parámetro será el valor final.

La función solicitará al usuario que inserte por teclado una opción y la almacena en la variable opcionUsuario.

Mientras el usuario no inserte un valor entre el valor inicial y el final, la función no terminará, mostrando de nuevo la información de insertar una entrada.

03 – Función eligeMenuPrincipal

Crea una función llamada eligeMenuPrincipal que mostrará el menú principal utilizando la función muestraMenuPrincipal, mostrará un mensaje solicitando una entrada por teclado y leerá la opción elegida por el usuario en la variable opcionUsuario. El proceso se repetirá hasta que el usuario inserte un valor 0 por teclado, que es el valor de salida.

En función de la opción elegida por el usuario mostrará uno de los siguientes mensajes:

0 – Mostrará un mensaje informando de que saldremos del programa.

1 – Mostrará un mensaje informando que se ha elegido opciones de usuarios

2 – Mostrará un mensaje informando que se ha elegido opciones de ficheros

3 – Mostrará un mensaje informando que se ha elegido opciones de copias de seguridad.

Si el usuario otro valor se mostrará un mensaje advirtiendo que se ha insertado un valor no válido. Solo si el usuario inserta el valor 0, terminará la función. Si no, se repite el proceso hasta que el usuario inserte un 0.

04 – Script – sysTools.sh

Crea un script llamado sysTools.sh que, utilizando todas o algunas de las funciones anteriores, pregunte al usuario que acción quiere realizar y muestre en pantalla información al respecto.

05 – Script eligeOperacion.sh

Crea un script llamado eligeOperacion.sh que recibirá por parámetro una operación a realizar con el script. En función de la operación insertada por el usuario, el script realizará una operación u otra. Por tanto, solo utilizaremos el primer parámetro pasado al scrpt.

Los valores reconocidos de opción por el script son:

  1. usuarios
  2. grupos
  3. procesos
  4. ficheros
  5. directorio

En caso de que el usuario inserte la cadena «usuarios» mostrará una lista con todos los nombres de cuentas de usuario interactivas del sistema.

Consideramos cuentas de usuario interactiva aquella cuenta de usuario que utilice como shell o interprete de comandos el interprete /bin/bash. Esta información está disponible en el fichero de cuentas de usuario del sistema. Deberás filtrar dicha información para comprobar que cuentas cumplen con ese requisito y seleccionar solo el campo que te interese, en este caso el nombre del usuario, de la información de cada cuenta.

En caso de que el usuario inserte la cadena «grupos» mostrará una lista con los nombres de todos los grupos disponibles en el sistema ordenados alfabéticamente.

Igual que en el caso anterior, toda esta información está en el fichero de cuentas de grupos del sistema. Deberás filtrar la información para mostrar solo el campo que se solicita, el nombre del grupo, y ordenar la lista alfabéticamente utilizando el comando sort.

En caso de que el usuario inserte la cadena «procesos» mostrará todos los procesos en ejecución en el sistema.

En caso de que el usuario inserte la cadena «ficheros» mostrará el listado de los ficheros que contiene el directorio personal del usuario actual.

En caso de que el usuario inserte la cadena «directorio» mostrará un resumen de la ocupación del directorio personal del usuario actual en un formato comprensible por humanos. Para ello utilizaremos el comando du. Consulta la página de manual para comprobar las opciones disponibles y elegir las adecuadas

Si el usuario inserta cualquier otro valor o no pasa parámetro, se mostrarán una serie de mensajes en los que se mostrarán las opciones disponibles en el script, terminando con la fecha y hora actual.

06 – Script eligeOperacion02.sh

Partiendo del script eligeOperacion.sh, vamos a modificarlo para que esté un poco más organizado todo el código que ejecutamos y quede más legible la elección de operación y la acción a realizar.

Para ello, crearás una función para cada una de las operaciones. El nombre de la función deberá ser acorde a la función que realizará.

Por ejemplo, la primera función podría llamarse muestraUsuarios. Esta función realizará las acciones que se realizarán en caso de que el usuario pase por parámetro el valor «usuarios».

Deberás hacer lo mismo para las opciones grupos, procesos, ficheros y directorios.

Una vez creadas las funciones con la funcionalidad requerida, deberás configurar la sentencia de elección múltiple case utilizada para elegir las acciones a realizar en función del valor de la opción pasada en el parámetro 1 para que invoquen o llamen a la función adecuada. De esta forma, sustituimos los comandos que se ejecutaban en cada caso por la llamada a la función que realizará dicha función.

Por ejemplo, para el caso de la opción «usuarios» quedaría algo así:

...
"usuarios") muestraUsuarios
;;

...