diff --git a/AD.sh b/AD.sh index ebac96f..802cfdf 100644 --- a/AD.sh +++ b/AD.sh @@ -1,62 +1,237 @@ #!/bin/bash -while true; do - echo "Gestion des comptes utilisateurs dans Samba AD" - echo "1. Créer un nouveau compte" - echo "2. Désactiver un compte" - echo "3. Supprimer un compte" - echo "4. Réinitialiser le mot de passe" - echo "5. Vérifier un compte" - echo "0. Quitter" +# Mot de passe par d faut +default_password='*******' - read -p "Choisissez une option (1-5 ou 0): " choice +# Couleurs +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # Pas de couleur + +# G n rateur de mot de passe al atoire +generate_password() { + echo "$(tr -dc A-Za-z0-9 /dev/null 2>&1 + if [ $? -eq 0 ]; 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 + 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}" + pause + else + echo -e "${RED}Erreur lors de la cr ation de l'utilisateur.${NC}" + pause + continue + fi + + # Ajout automatique au groupe "Administratifs" + samba-tool group addmembers "Administratifs" "$username" + if [ $? -eq 0 ]; then + 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 + + # Demande pour l'ajout dans d'autres groupes + echo "Dans quels autres groupes souhaitez-vous ajouter l'utilisateur ?" + groupes_disponibles=$(get_group_list) + + echo "$groupes_disponibles" | nl + + 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}" + else + echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}" + fi + done + pause ;; 2) - read -p "Nom d'utilisateur à désactiver: " username - read -p "Voulez-vous vraiment désactiver le compte $username ? (y/n): " confirmation - if [ "$confirmation" == "y" ]; then - samba-tool user disable $username - echo "Compte $username désactivé." - else - echo "Opération annulée." + read -p "Nom d'utilisateur d sactiver: " username + + samba-tool user show "$username" > /dev/null 2>&1 + if [ $? -ne 0 ]; 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 + if [ "$confirmation" == "y" ]; then + samba-tool user disable "$username" + echo -e "${YELLOW}Compte $username d sactiv .${NC}" + else + 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 + echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" + pause + continue + fi + read -p "Voulez-vous vraiment supprimer le compte $username ? (y/n): " confirmation if [ "$confirmation" == "y" ]; then - samba-tool user delete $username - echo "Compte $username supprimé avec succès." + samba-tool user delete "$username" + echo -e "${GREEN}Compte $username supprim avec succ s.${NC}" else - echo "Opération annulée." + 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 "Définir un mot de passe par défaut ? (y/n): " default_password - samba-tool user setpassword $username --newpassword="${default_password}" --must-change-at-next-login - echo "Mot de passe réinitialisé pour le compte $username. L'utilisateur devra le changer au prochain démarrage." + 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 + 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 "$new_password" | samba-tool user setpassword "$username" + + if [ $? -eq 0 ]; then + 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}" + fi + pause + ;; + 5) + read -p "Nom d'utilisateur v rifier: " username + + samba-tool user show "$username" > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" + pause + continue + fi + + user_info=$(samba-tool user show "$username") + + echo "$user_info" + + if echo "$user_info" | grep -q "account_locked: true"; then + echo -e "${RED}Le compte est verrouill .${NC}" + elif echo "$user_info" | grep -q "password_expired: true"; then + echo -e "${YELLOW}Le mot de passe est expir .${NC}" + elif echo "$user_info" | grep -q "userAccountControl:.*ACCOUNTDISABLE"; then + echo -e "${YELLOW}Le compte est d sactiv .${NC}" + else + echo -e "${GREEN}Le compte est actif.${NC}" + fi + + pause + ;; + 6) + read -p "Nom d'utilisateur ajouter au groupe : " username + + samba-tool user show "$username" > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" + pause + continue + fi + + echo "Dans quels groupes souhaitez-vous ajouter l'utilisateur ?" + groupes_disponibles=$(get_group_list) + + echo "$groupes_disponibles" | nl + + 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}" + else + echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}" + fi + done + pause ;; - 5) - read -p "Nom d'utilisateur: " username - bash ./CheckAccountOf.sh $username - pause - ;; 0) - echo "Au revoir! Merci d'etre passé" + echo -e "${BLUE}Au revoir !${NC}" exit 0 ;; *) - echo "Choix invalide. Veuillez choisir une option de 1 à 5." + echo -e "${RED}Option invalide, veuillez choisir une option valide.${NC}" + pause ;; esac - done + + + +