Creación y Eliminación por Lotes de Usuarios y Grupos

LinuxBeginner
Practicar Ahora

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.sh en el directorio /home/labex/project.
  • El script debe implementar dos operaciones principales: add y del, 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 error y salir.
    • El student_count (cuarto argumento) debe ser un entero entre 1 y 10, ambos inclusive. De lo contrario, imprime parameter error y sale.
    • El student_prefix (tercer argumento) debe consistir únicamente en letras minúsculas. De lo contrario, imprime parameter error y sale.
  • 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/zsh como su shell predeterminado.
    • El usuario profesor debe ser añadido al grupo sudo para otorgarle privilegios administrativos.
  • Detalles de la Operación del:

    • El script debe eliminar los usuarios profesor y estudiantes especificados, incluyendo sus directorios de inicio.
    • La operación del no 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 (stu1 a stu6).

    sh userctr.sh add teacher stu 6
  • Salida de Ejemplo:

    teacher:901231
    stu1:271828
    stu2:928172
    stu3:******
    stu4:384712
    stu5:098273
    stu6:921098

    En esta salida, los asteriscos para stu3 indican 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 sudo antes de los comandos que requieren privilegios de root, como useradd y userdel.
  • 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 grupo sudo.
  • 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 for es ú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.
✨ Revisar Solución y Practicar

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.