From 1b81db21f03fd3dece474840527229470e0ab658 Mon Sep 17 00:00:00 2001 From: jfontaine35 <76435797+jfontaine35@users.noreply.github.com> Date: Tue, 10 Dec 2024 10:41:00 +0100 Subject: [PATCH] Update AD.sh --- AD.sh | 141 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 75 insertions(+), 66 deletions(-) diff --git a/AD.sh b/AD.sh index 55bc5a6..9522cec 100644 --- a/AD.sh +++ b/AD.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Mot de passe par d faut +# Mot de passe par défaut default_password='*******' # Couleurs @@ -10,70 +10,86 @@ YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Pas de couleur -# G n rateur de mot de passe al atoire +# Générateur de mot de passe aléatoire generate_password() { echo "$(tr -dc A-Za-z0-9 /dev/null 2>&1 +} + +# Fonction pour lister les groupes d'un utilisateur +list_user_groups() { + local username="$1" + local groups=() + + # Utiliser samba-tool pour obtenir la liste des groupes et filtrer pour l'utilisateur spécifique + groups=$(samba-tool group list | while read -r group; do + # Vérifier si l''utilisateur est membre du groupe + if samba-tool group listmembers "$group" 2>/dev/null | grep -q "^$username$"; then + echo "$group" + fi + done) + + echo "$groups" } while true; do clear echo -e "${BLUE}Gestion des comptes AD de H3${NC}" - echo -e "${GREEN}1. Cr er un nouveau compte${NC}" - echo -e "${GREEN}2. D sactiver un compte${NC}" + echo -e "${GREEN}1. Créer un nouveau compte${NC}" + echo -e "${GREEN}2. Désactiver un compte${NC}" echo -e "${GREEN}3. Supprimer un compte${NC}" - echo -e "${GREEN}4. R initialiser le mot de passe${NC}" - echo -e "${GREEN}5. V rifier un compte${NC}" - echo -e "${GREEN}6. Ajouter un utilisateur un groupe${NC}" + echo -e "${GREEN}4. Réinitialiser le mot de passe${NC}" + echo -e "${GREEN}5. Vérifier un compte${NC}" + echo -e "${GREEN}6. Ajouter un utilisateur à un groupe${NC}" echo -e "${RED}0. Quitter${NC}" read -p "Choisissez une option (1-6 ou 0): " choice case $choice in 1) - read -p "Entrez le Pr nom : " PRENOM + read -p "Entrez le Prénom : " PRENOM read -p "Entrez le Nom : " NAME - PRENOM="${PRENOM^}" # Met la premi re lettre en majuscule + PRENOM="${PRENOM^}" # Met la première lettre en majuscule NAME="${NAME,,}" # Met tout le nom en minuscules - NAME="${NAME^}" # Met la premi re lettre en majuscule + NAME="${NAME^}" # Met la première lettre en majuscule username="${PRENOM:0:1}.${NAME}" - echo "Nom d'utilisateur g n r : $username" + echo "Nom d'utilisateur généré : $username" - samba-tool user show "$username" > /dev/null 2>&1 - if [ $? -eq 0 ]; then - echo -e "${RED}Erreur : L'utilisateur $username existe d j .${NC}" + if user_exists "$username"; then + echo -e "${RED}Erreur : L'utilisateur $username existe déjà.${NC}" pause continue fi - - # Cr ation du compte avec le mot de passe par d faut + # Création du compte avec le mot de passe par défaut samba-tool user create "$username" --given-name="$PRENOM" --surname="$NAME" --login-shell="/bin/bash" --random-password samba-tool user setpassword "$username" --newpassword="$default_password" - if [ $? -eq 0 ]; then - echo -e "${GREEN}Compte $username ($PRENOM $NAME) cr avec succ s.${NC}" - echo -e "${RED}Mot de passe par d faut : $default_password${NC}" + echo -e "${GREEN}Compte $username ($PRENOM $NAME) créé avec succès.${NC}" + echo -e "${RED}Mot de passe par défaut : $default_password${NC}" pause else - echo -e "${RED}Erreur lors de la cr ation de l'utilisateur.${NC}" + echo -e "${RED}Erreur lors de la création de l'utilisateur.${NC}" pause continue fi @@ -81,7 +97,7 @@ while true; do # Ajout automatique au groupe "Administratifs" samba-tool group addmembers "Administratifs" "$username" if [ $? -eq 0 ]; then - echo -e "${GREEN}Utilisateur ajout au groupe Administratifs.${NC}" + echo -e "${GREEN}Utilisateur ajouté au groupe Administratifs.${NC}" else echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe Administratifs.${NC}" fi @@ -92,14 +108,14 @@ while true; do echo "$groupes_disponibles" | nl - read -p "Votre s lection (num ros s par s par des espaces) : " group_selections + read -p "Votre sélection (numéros séparés par des espaces) : " group_selections for group_index in $group_selections; do group=$(echo "$groupes_disponibles" | sed -n "${group_index}p") samba-tool group addmembers "$group" "$username" if [ $? -eq 0 ]; then - echo -e "${GREEN}Utilisateur ajout au groupe $group.${NC}" + echo -e "${GREEN}Utilisateur ajouté au groupe $group.${NC}" else echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}" fi @@ -107,29 +123,27 @@ while true; do pause ;; 2) - read -p "Nom d'utilisateur d sactiver: " username + read -p "Nom d'utilisateur à désactiver: " username - samba-tool user show "$username" > /dev/null 2>&1 - if [ $? -ne 0 ]; then + if ! user_exists "$username"; then echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" pause continue fi - read -p "Voulez-vous vraiment d sactiver le compte $username ? (y/n): " confirmation + read -p "Voulez-vous vraiment désactiver le compte $username ? (y/n): " confirmation if [ "$confirmation" == "y" ]; then samba-tool user disable "$username" - echo -e "${YELLOW}Compte $username d sactiv .${NC}" + echo -e "${YELLOW}Compte $username désactivé.${NC}" else - echo -e "${RED}Op ration annul e.${NC}" + echo -e "${RED}Opération annulée.${NC}" fi pause ;; 3) - read -p "Nom d'utilisateur supprimer: " username + read -p "Nom d'utilisateur à supprimer: " username - samba-tool user show "$username" > /dev/null 2>&1 - if [ $? -ne 0 ]; then + if ! user_exists "$username"; then echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" pause continue @@ -138,76 +152,75 @@ while true; do read -p "Voulez-vous vraiment supprimer le compte $username ? (y/n): " confirmation if [ "$confirmation" == "y" ]; then samba-tool user delete "$username" - echo -e "${GREEN}Compte $username supprim avec succ s.${NC}" + echo -e "${GREEN}Compte $username supprimé avec succès.${NC}" else - echo -e "${RED}Op ration annul e.${NC}" + echo -e "${RED}Opération annulée.${NC}" fi pause ;; 4) - read -p "Nom d'utilisateur pour r initialiser le mot de passe: " username + read -p "Nom d'utilisateur pour réinitialiser le mot de passe: " username - samba-tool user show "$username" > /dev/null 2>&1 - if [ $? -ne 0 ]; then + if ! user_exists "$username"; then echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" pause continue fi new_password=$(generate_password) - echo "Nouveau mot de passe g n r : $new_password" + echo "Nouveau mot de passe généré : $new_password" echo "$new_password" | samba-tool user setpassword "$username" if [ $? -eq 0 ]; then - echo -e "${GREEN}Mot de passe r initialis pour le compte $username.${NC}" + echo -e "${GREEN}Mot de passe réinitialisé pour le compte $username.${NC}" else - echo -e "${RED}Erreur lors de la r initialisation du mot de passe.${NC}" + echo -e "${RED}Erreur lors de la réinitialisation du mot de passe.${NC}" fi pause ;; 5) read -p "Nom d'utilisateur à vérifier: " username - # Vérifier si l'utilisateur existe - if ! samba-tool user show "$username" > /dev/null 2>&1; then + if ! user_exists "$username"; then echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" pause continue fi - # Récupérer les informations détaillées - user_info=$(samba-tool user show "$username" --attributes=all) + # Récupérer les informations de l'utilisateur + user_info=$(samba-tool user show "$username") # Afficher les informations principales de manière formatée echo -e "${BLUE}Informations du compte utilisateur:${NC}" - echo "$user_info" | grep -E "displayName|userPrincipalName|mail|telephoneNumber|whenCreated|lastLogon" - - # Vérifier le statut du compte de manière plus précise - account_status=$(samba-tool user show "$username" | grep -oP 'userAccountControl:\K\w+') + echo "$user_info" | grep -E "displayName:|userPrincipalName:|mail:|telephoneNumber:|whenCreated:|lastLogon:" # Vérification détaillée du statut - if [[ "$account_status" =~ "ACCOUNTDISABLE" ]]; then + if echo "$user_info" | grep -q "ACCOUNTDISABLE"; then echo -e "${RED}Statut : Compte DÉSACTIVÉ${NC}" - elif samba-tool user show "$username" | grep -q "account_locked: true"; then + elif echo "$user_info" | grep -q "account_locked: true"; then echo -e "${RED}Statut : Compte VERROUILLÉ${NC}" - elif samba-tool user show "$username" | grep -q "password_expired: true"; then + elif echo "$user_info" | grep -q "password_expired: true"; then echo -e "${YELLOW}Statut : Mot de passe EXPIRÉ${NC}" else echo -e "${GREEN}Statut : Compte ACTIF${NC}" fi - + # Afficher les groupes de l'utilisateur echo -e "\n${BLUE}Groupes:${NC}" - samba-tool group listmembers | grep "$username" + user_groups=$(list_user_groups "$username") + if [ -n "$user_groups" ]; then + echo "$user_groups" | sort + else + echo "Aucun groupe trouvé." + fi pause ;; 6) - read -p "Nom d'utilisateur ajouter au groupe : " username + read -p "Nom d'utilisateur à ajouter au groupe : " username - samba-tool user show "$username" > /dev/null 2>&1 - if [ $? -ne 0 ]; then + if ! user_exists "$username"; then echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" pause continue @@ -218,14 +231,14 @@ while true; do echo "$groupes_disponibles" | nl - read -p "Votre s lection (num ros s par s par des espaces) : " group_selections + read -p "Votre sélection (numéros séparés par des espaces) : " group_selections for group_index in $group_selections; do group=$(echo "$groupes_disponibles" | sed -n "${group_index}p") samba-tool group addmembers "$group" "$username" if [ $? -eq 0 ]; then - echo -e "${GREEN}Utilisateur ajout au groupe $group.${NC}" + echo -e "${GREEN}Utilisateur ajouté au groupe $group.${NC}" else echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}" fi @@ -242,7 +255,3 @@ while true; do ;; esac done - - - -