Introducción
En este desafío, crearás un script de bash llamado userctr.sh para automatizar la adición y eliminación por lotes de usuarios en un servidor. Escribirás un script que acepte argumentos de línea de comandos para especificar la operación (add o del), el nombre de usuario de un profesor, un prefijo para los nombres de usuario de los estudiantes y el número de estudiantes a gestionar. Esta tarea mejorará tus habilidades en scripting de shell, gestión de usuarios y automatización, que son cruciales para la administración de sistemas.
Creación y Eliminación por Lotes de Usuarios y Grupos
Un administrador de sistemas necesita una forma de añadir eficientemente un profesor y múltiples usuarios estudiantes a los servidores de aula. Crear manualmente cada cuenta es tedioso y propenso a errores. Tu tarea es crear un script de bash, userctr.sh, para automatizar este proceso. El script tomará el tipo de operación, el nombre del profesor, el prefijo del nombre del estudiante y el número de estudiantes como parámetros.
Tareas
- Crea un script Bash llamado
userctr.shen el directorio/home/labex/project. - El script debe implementar dos operaciones principales:
addydel, determinadas por el primer argumento de línea de comandos. - Para la operación
add, crea un usuario profesor y un número especificado de usuarios estudiantes. - Para la operación
del, elimina los usuarios profesor y estudiantes especificados. - El script debe validar todos los parámetros de entrada según los requisitos a continuación.
Requisitos
Formato de Ejecución: El script debe ser ejecutable con cuatro argumentos:
sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>Validación de Parámetros:
- El script debe recibir exactamente cuatro argumentos. Si no es así, debe imprimir
parameter errory salir. - El
student_count(cuarto argumento) debe ser un entero entre 1 y 10, ambos inclusive. De lo contrario, imprimeparameter errory sale. - El
student_prefix(tercer argumento) debe consistir únicamente en letras minúsculas. De lo contrario, imprimeparameter errory sale.
- El script debe recibir exactamente cuatro argumentos. Si no es así, debe imprimir
Detalles de la Operación
add:- Si un usuario que se va a añadir ya existe, no intentes crearlo. En su lugar, imprime su nombre de usuario seguido de
******(por ejemplo,stu3:******). - Para los usuarios nuevos, genera una contraseña numérica aleatoria de 6 dígitos.
- Imprime el nombre de usuario y su contraseña para cada usuario recién creado, separados por dos puntos (por ejemplo,
teacher:901231). - Todos los usuarios creados deben usar
/bin/zshcomo su shell predeterminado. - El usuario profesor debe ser añadido al grupo
sudopara otorgarle privilegios administrativos.
- Si un usuario que se va a añadir ya existe, no intentes crearlo. En su lugar, imprime su nombre de usuario seguido de
Detalles de la Operación
del:- El script debe eliminar los usuarios profesor y estudiantes especificados, incluyendo sus directorios de inicio.
- La operación
delno debe producir ninguna salida. - Si un usuario a eliminar no existe, el script no debe reportar un error y debe proceder a eliminar los otros usuarios existentes.
Ejemplo
Los siguientes ejemplos demuestran el comportamiento esperado de tu script.
Añadiendo Usuarios: Este comando añade un profesor (
teacher) y seis estudiantes (stu1astu6).sh userctr.sh add teacher stu 6Salida de Ejemplo:
teacher:901231 stu1:271828 stu2:928172 stu3:****** stu4:384712 stu5:098273 stu6:921098En esta salida, los asteriscos para
stu3indican que el usuario ya existía, por lo que no se generó una nueva contraseña.Eliminando Usuarios: Este comando elimina el mismo conjunto de usuarios. No debería producir ninguna salida al completarse con éxito.
sh userctr.sh del teacher stu 6
Pistas
- Usa
sudoantes de los comandos que requieren privilegios de root, comouseraddyuserdel. - Comprueba el número de argumentos con
$#. - Accede a los argumentos usando
$1,$2, etc. - Para comprobar si un usuario existe, puedes usar
id -u <username>. El comando tendrá un código de salida distinto de cero si el usuario no existe. - Usa
useradd -m -s /bin/zsh <username>para crear un usuario con un directorio de inicio y establecer el shell Zsh. - Usa
usermod -aG sudo <username>para añadir un usuario al gruposudo. - Usa
userdel -r <username>para eliminar un usuario y su directorio de inicio. - Para generar un número aleatorio de 6 dígitos, puedes usar
shuf -i 100000-999999 -n 1. - Un bucle
fores útil para iterar sobre el número de estudiantes:for ((i=1; i<=$student_count; i++)). - Usa
if [[ "$string" =~ "regex" ]]para la coincidencia de patrones para validar parámetros.
Resumen
¡Felicitaciones! Has creado con éxito un script de bash para automatizar la gestión de usuarios. Este script puede añadir y eliminar usuarios por lotes, validar parámetros de entrada y manejar usuarios existentes, que son habilidades esenciales para cualquier administrador de sistemas. Has practicado el uso de sentencias condicionales, bucles, argumentos de línea de comandos y comandos externos como useradd y userdel dentro de un script.



