En esta entrada vamos a proponer una serie de scripts que tratan de solucionar ciertos problemas de administración. La idea es practicar con los contenidos de bash shell scripts estudiados hasta ahora (primer bloque) poniéndolos en prácticas en scripts que tengan cierto sentido.
systemInfo.sh
Crea un script llamado systemInfo.sh que almacenará en un fichero de texto plano cierta información del sistema. Esta información deberá estar almacenada en el directorio /sysinfo. Debemos asegurarnos de que este directorio existe.
Almacenaremos información en un fichero de log cuyo nombre será: «sysInfo-» seguido por el año, mes, día actual con extensión log. Año, mes y dia serán números de dos cifras. Si el fichero existe añadimos la información.
Almacenaremos en dicho fichero, en este orden y con etiquetas de texto que nos ayuden a conocer la información la siguiente información:
- Hora actual
- Usuarios conectados al sistema
- Información de permisos, propietario y grupo del directorio que contiene por defecto los directorios personales de los usuarios del sistema, del contenido no del propio directorio.
- Resumen de ocupación del directorio anterior en un formato comprensible por humanos.
- Información de ocupación de los sistemas de ficheros montados en el sistema.
- Procesos en ejecución actualmente en el sistema, todos los procesos.
Ayuda
Comandos que debemos utilizar:
- date
- w o who
- ls
- du
- df
- ps
Solución propuesta
El problema de esta solución es que tenemos que repetir la redirección una y otra vez. Lo ideal sería que el usuario, al ejecutar el script, se encargara de hacer la redirección por su cuenta. No obstante nos solicitan esta función y tenemos que hacerla.
Una posible mejora sería utilizar una función dentro del script para mostrar toda la información en pantalla y redirigir al fichero de log la salida al llamar la función.
Empresa de formación
Trabajamos en una empresa que se encarga, entre otras cosas, de dar cursos de formación. Los cursos de formación necesitan contar con un espacio de almacenamiento dónde tanto profesores como alumnos puedan compartir documentos digitales así como almacenar la información que necesiten de forma confidencial o semiconfidencial.
En el sistema podrán iniciar sesión tanto alumnos como profesores diferenciando entre unos y otros. Por tanto, necesitaremos crear cuentas de usuario para alumnos y para profesores, pudiendo en todo momento conocer si un usuario es profesor o alumno, para poder aplicar más tarde permisos de acceso.
Además, nos gustaría poder conocer a qué curso está matriculado cada alumno, para poder gestionar más tarde permisos de acceso.
Análisis de situación
Con esta información, trata de contestar estas preguntas:
- ¿Cómo te encargarías de diferenciar entre profesores, alumnos y otros usuarios del sistema?
- ¿Cómo gestionarías los distintos cursos a los que pueden asistir los alumnos?
initAcademy.sh
Crea un script que se encargue de iniciar la academia. Este script deberá asegurarse de que existen una serie de grupos, los que vamos a usar para gestionar el acceso a los directorios de información, y los directorios base .
Los grupos que deberían existir son los siguientes: profesores y alumnos.
Los directorios que deberían existir son los siguientes:
- Directorio base: /educatica
- Directorio de profesores:
- Ruta: /educatica/profesores.
- Permisos: Tan solo los miembros del grupo profesores podrá acceder para realizar operaciones de lectura. El resto de usuarios no podrá realizar ninguna operación.
- Directorio de alumnos:
- Ruta: /educatica/alumnos.
- Permisos: Podrán acceder todos los usuarios del sistema con permiso de lectura, pero los únicos que podrán acceder con permiso de lectura y escritura serán los profesores.
- Directorio de cursos:
- Ruta: /educatica/cursos
- Permisos: Podrán acceder todos los usuarios del sistema con permiso de lectura, pero los únicos que podrán acceder con permiso de lectura y escritura serán los profesores.
- Directorio de profesores:
Solución propuesta
Si lo ejecutamos de nuevo nos dará mensaje de advertencia de que los grupos ya existen.
Vamos a comprobar los directorios
Ojo! En mi sistema ya existía el directorio educatica con el directorio usuarios creado previamente.
addCourse.sh
Contextualización
Queremos gestionar los cursos que se imparten en en nuestra academia, proporcionando un espacio de almacenamiento para cada curso que se imparta.
Para ello, contaremos con un directorio propio para cada curso que tendrá el nombre del curso y se almacenará en el directorio /educatica/cursos. Dentro del directorio cursos tendremos los siguientes directorios: contenidos, alumnos y publico.
Al directorio de un curso (/educatica/cursos/NombreDelCurso) podrán acceder todos los usuarios del sistema con permiso de lectura. Tan solo los profesores podrán acceder al directorio de un curso concreto con permiso de lectura y escritura.
Al directorio contenidos y alumnos, que estarán dentro del directorio del curso, tan solo podrán acceder para control total los profesores. El resto de usuarios tan solo podrá acceder para realizar operaciones de lectura. Al directorio público, todos los usuarios podrán acceder para realizar operaciones de lectura y escritura.
Función del script
El script deberá recibir por parámetro el nombre del curso a crear o añadir al sistema.
Con el nombre del curso, debemos crear el directorio del curso dentro del directorio de cursos (/educatica/cursos). Este directorio tendrá el nombre del curso proporcionado. También debemos crear los directorios contenido, alumnos y publico dentro del directorio del curso.
Por último, debemos configurar los permisos de los directorios creados de acuerdo al enunciado.
To Do List para el futuro
- Comprobar que se pasa un nombre de un curso por parámetro, en el primer parámetro.
- Comprobar si el grupo existe antes de crearlo. Si no existe el grupo, lo creamos.
- Comprobar que el directorio del curso existe. Si no existe el directorio, lo creamos.
addTeacher.sh
Contextualización
Queremos contar con un script que nos permita añadir un profesor a nuestra academia. Los profesores contarán con una cuenta de usuario en el sistema para poder iniciar sesión y usarlo.
Además, cada profesor tendrá un espacio propio protegido de almacenamiento dentro del directorio de profesores. Este directorio tendrá el nombre del usuario profesor dentro de /educatica/profesores.
Función del script
El script recibirá por parámetro el nombre del profesor, que será la cuenta de usuario que crearemos en el sistema.
El script creará una cuenta de usuario con el nombre del profesor proporcionado en el primer parámetro del script.
Creamos un directorio con el nombre del profesor en el directorio de profesores /educatica/profesores y lo configuramos de forma que el profesor sea el único usuario del sistema que pueda acceder a dicho directorio con control total (lectura y escritura). El resto de usuarios del sistema no podrá realizar ninguna operación.
To Do List para el futuro
- Comprobar que se pasa un nombre de un profesor por parámetro, en el primer parámetro.
- Comprobar si el usuario existe antes de crearlo. Si no existe el usuario, lo creamos.
- Comprobar que el directorio del profesor existe. Si no existe el directorio, lo creamos.
addStudent.sh
Contextualización
Queremos contar con un script que nos permita añadir un alumno a nuestra academia. Los alumnos contarán con una cuenta de usuario en el sistema para poder iniciar sesión y usarlo.
Además, cada alumno tendrá un espacio propio protegido de almacenamiento dentro del directorio de alumnos. Este directorio tendrá el nombre del usuario alumno dentro de /educatica/alumnos.
Función del script
El script recibirá por parámetro el nombre del alumno, que será la cuenta de usuario que crearemos en el sistema.
El script creará una cuenta de usuario con el nombre del alumno proporcionado en el primer parámetro del script.
Creamos un directorio con el nombre del alumno en el directorio de alumnos /educatica/alumnos y lo configuramos de forma que el alumno pueda acceder a dicho directorio con control total (lectura y escritura). Los miembros del grupo profesores podrán acceder también con control total a dicho directorio. El resto de usuarios del sistema no podrá realizar ninguna operación.
To Do List para el futuro
- Comprobar que se pasa un nombre de un alumno por parámetro, en el primer parámetro.
- Comprobar si el usuario existe antes de crearlo. Si no existe el usuario, lo creamos.
- Comprobar que el directorio del alumno existe. Si no existe el directorio, lo creamos.
showCourseInfo.sh
Vamos a crear un script llamado showCourseInfo.sh que obtendrán
Dejar una respuesta