Création et Suppression en Masse d'Utilisateurs et de Groupes

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce défi, vous allez créer un script bash nommé userctr.sh pour automatiser l'ajout et la suppression d'utilisateurs par lots sur un serveur. Vous écrirez un script qui accepte des arguments en ligne de commande pour spécifier l'opération (add ou del), le nom d'utilisateur d'un enseignant, un préfixe pour les noms d'utilisateur des étudiants, et le nombre d'étudiants à gérer. Cette tâche améliorera vos compétences en scripting shell, en gestion des utilisateurs et en automatisation, qui sont cruciales pour l'administration système.

Création et Suppression en Masse d'Utilisateurs et de Groupes

Un administrateur système a besoin d'un moyen efficace pour ajouter un enseignant et plusieurs utilisateurs étudiants aux serveurs de classe. La création manuelle de chaque compte est fastidieuse et sujette aux erreurs. Votre tâche consiste à créer un script bash, userctr.sh, pour automatiser ce processus. Le script prendra le type d'opération, le nom de l'enseignant, le préfixe du nom de l'étudiant et le nombre d'étudiants comme paramètres.

Tâches

  • Créez un script Bash nommé userctr.sh dans le répertoire /home/labex/project.
  • Le script doit implémenter deux opérations principales : add et del, déterminées par le premier argument de la ligne de commande.
  • Pour l'opération add, créez un utilisateur enseignant et un nombre spécifié d'utilisateurs étudiants.
  • Pour l'opération del, supprimez les utilisateurs enseignants et étudiants spécifiés.
  • Le script doit valider tous les paramètres d'entrée conformément aux exigences ci-dessous.

Exigences

  • Format d'Exécution : Le script doit être exécutable avec quatre arguments :

    sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>
  • Validation des Paramètres :

    • Le script doit recevoir exactement quatre arguments. Sinon, il doit afficher parameter error et se terminer.
    • Le student_count (quatrième argument) doit être un entier compris entre 1 et 10, inclus. Sinon, affichez parameter error et terminez.
    • Le student_prefix (troisième argument) doit être composé uniquement de lettres minuscules. Sinon, affichez parameter error et terminez.
  • Détails de l'Opération add :

    • Si un utilisateur à ajouter existe déjà, n'essayez pas de le créer. Affichez plutôt son nom d'utilisateur suivi de ****** (par exemple, stu3:******).
    • Pour les nouveaux utilisateurs, générez un mot de passe numérique aléatoire de 6 chiffres.
    • Affichez le nom d'utilisateur et son mot de passe pour chaque nouvel utilisateur créé, séparés par un deux-points (par exemple, teacher:901231).
    • Tous les utilisateurs créés doivent utiliser /bin/zsh comme shell par défaut.
    • L'utilisateur enseignant doit être ajouté au groupe sudo pour accorder des privilèges administratifs.
  • Détails de l'Opération del :

    • Le script doit supprimer les utilisateurs enseignants et étudiants spécifiés, y compris leurs répertoires personnels.
    • L'opération del ne doit produire aucune sortie.
    • Si un utilisateur à supprimer n'existe pas, le script ne doit pas signaler d'erreur et doit continuer à supprimer les autres utilisateurs existants.

Exemple

Les exemples suivants démontrent le comportement attendu de votre script.

  • Ajout d'Utilisateurs : Cette commande ajoute un enseignant (teacher) et six étudiants (stu1 à stu6).

    sh userctr.sh add teacher stu 6
  • Exemple de Sortie :

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

    Dans cette sortie, les astérisques pour stu3 indiquent que l'utilisateur existait déjà, donc un nouveau mot de passe n'a pas été généré.

  • Suppression d'Utilisateurs : Cette commande supprime le même ensemble d'utilisateurs. Elle ne devrait produire aucune sortie en cas de succès.

    sh userctr.sh del teacher stu 6

Indices

  • Utilisez sudo avant les commandes qui nécessitent des privilèges root, comme useradd et userdel.
  • Vérifiez le nombre d'arguments avec $#.
  • Accédez aux arguments en utilisant $1, $2, etc.
  • Pour vérifier si un utilisateur existe, vous pouvez utiliser id -u <username>. La commande aura un code de sortie non nul si l'utilisateur n'existe pas.
  • Utilisez useradd -m -s /bin/zsh <username> pour créer un utilisateur avec un répertoire personnel et définir le shell Zsh.
  • Utilisez usermod -aG sudo <username> pour ajouter un utilisateur au groupe sudo.
  • Utilisez userdel -r <username> pour supprimer un utilisateur et son répertoire personnel.
  • Pour générer un nombre aléatoire de 6 chiffres, vous pouvez utiliser shuf -i 100000-999999 -n 1.
  • Une boucle for est utile pour itérer sur le nombre d'étudiants : for ((i=1; i<=$student_count; i++)).
  • Utilisez if [[ "$string" =~ "regex" ]] pour la correspondance de motifs afin de valider les paramètres.
✨ Vérifier la solution et pratiquer

Résumé

Félicitations ! Vous avez créé avec succès un script bash pour automatiser la gestion des utilisateurs. Ce script peut ajouter et supprimer des utilisateurs par lots, valider les paramètres d'entrée et gérer les utilisateurs existants, ce qui constitue des compétences essentielles pour tout administrateur système. Vous avez pratiqué l'utilisation d'instructions conditionnelles, de boucles, d'arguments de ligne de commande et de commandes externes comme useradd et userdel dans un script.