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.shdans le répertoire/home/labex/project. - Le script doit implémenter deux opérations principales :
addetdel, 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 erroret se terminer. - Le
student_count(quatrième argument) doit être un entier compris entre 1 et 10, inclus. Sinon, affichezparameter erroret terminez. - Le
student_prefix(troisième argument) doit être composé uniquement de lettres minuscules. Sinon, affichezparameter erroret terminez.
- Le script doit recevoir exactement quatre arguments. Sinon, il doit afficher
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/zshcomme shell par défaut. - L'utilisateur enseignant doit être ajouté au groupe
sudopour accorder des privilèges administratifs.
- Si un utilisateur à ajouter existe déjà, n'essayez pas de le créer. Affichez plutôt son nom d'utilisateur suivi de
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
delne 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 6Exemple de Sortie :
teacher:901231 stu1:271828 stu2:928172 stu3:****** stu4:384712 stu5:098273 stu6:921098Dans cette sortie, les astérisques pour
stu3indiquent 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
sudoavant les commandes qui nécessitent des privilèges root, commeuseraddetuserdel. - 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 groupesudo. - 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
forest 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.
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.



