Update AD.sh

This commit is contained in:
jfontaine35 2024-12-10 10:41:00 +01:00 committed by GitHub
parent 1c3d4c720b
commit 1b81db21f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 75 additions and 66 deletions

141
AD.sh
View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Mot de passe par d faut # Mot de passe par défaut
default_password='*******' default_password='*******'
# Couleurs # Couleurs
@ -10,70 +10,86 @@ YELLOW='\033[1;33m'
BLUE='\033[0;34m' BLUE='\033[0;34m'
NC='\033[0m' # Pas de couleur 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() { generate_password() {
echo "$(tr -dc A-Za-z0-9 </dev/urandom | head -c 12)" echo "$(tr -dc A-Za-z0-9 </dev/urandom | head -c 12)"
} }
# Pause jusqu' l'appui sur une touche # Pause jusqu'à l'appui sur une touche
pause() { pause() {
read -n 1 -s -r -p "Appuyez sur une touche pour continuer..." read -n 1 -s -r -p "Appuyez sur une touche pour continuer..."
} }
# Liste des groupes, en excluant les groupes syst me # Liste des groupes, en excluant les groupes système
get_group_list() { get_group_list() {
excluded_groups="Domain Admins|Enterprise Admins|Domain Users|Domain Guests|Administrators|Users|Guests|krbtgt|DnsAdmins|Windows Authorization Access Group|Server Operators|> local excluded_groups="Domain Admins|Enterprise Admins|Domain Users|Domain Guests|Administrators|Users|Guests|krbtgt|DnsAdmins|Windows Authorization Access Group|Server Operators"
samba-tool group list | grep -Ev "^($excluded_groups)$" | sort samba-tool group list | grep -Ev "^($excluded_groups)$" | sort
}
#samba-tool group list | grep -Ev "^(Domain Admins|Enterprise Admins|Domain Users|Domain Guests|Administrators|Users|Guests|krbtgt|DnsAdmins)$" | sort # Fonction pour vérifier l'existence d'un utilisateur
user_exists() {
samba-tool user show "$1" > /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 while true; do
clear clear
echo -e "${BLUE}Gestion des comptes AD de H3${NC}" echo -e "${BLUE}Gestion des comptes AD de H3${NC}"
echo -e "${GREEN}1. Cr er un nouveau compte${NC}" echo -e "${GREEN}1. Créer un nouveau compte${NC}"
echo -e "${GREEN}2. D sactiver un compte${NC}" echo -e "${GREEN}2. Désactiver un compte${NC}"
echo -e "${GREEN}3. Supprimer 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}4. Réinitialiser le mot de passe${NC}"
echo -e "${GREEN}5. V rifier un compte${NC}" echo -e "${GREEN}5. Vérifier un compte${NC}"
echo -e "${GREEN}6. Ajouter un utilisateur un groupe${NC}" echo -e "${GREEN}6. Ajouter un utilisateur à un groupe${NC}"
echo -e "${RED}0. Quitter${NC}" echo -e "${RED}0. Quitter${NC}"
read -p "Choisissez une option (1-6 ou 0): " choice read -p "Choisissez une option (1-6 ou 0): " choice
case $choice in case $choice in
1) 1)
read -p "Entrez le Pr nom : " PRENOM read -p "Entrez le Prénom : " PRENOM
read -p "Entrez le Nom : " NAME 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 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}" 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 user_exists "$username"; then
if [ $? -eq 0 ]; then echo -e "${RED}Erreur : L'utilisateur $username existe déjà.${NC}"
echo -e "${RED}Erreur : L'utilisateur $username existe d j .${NC}"
pause pause
continue continue
fi 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 create "$username" --given-name="$PRENOM" --surname="$NAME" --login-shell="/bin/bash" --random-password
samba-tool user setpassword "$username" --newpassword="$default_password" samba-tool user setpassword "$username" --newpassword="$default_password"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo -e "${GREEN}Compte $username ($PRENOM $NAME) cr avec succ s.${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}" echo -e "${RED}Mot de passe par défaut : $default_password${NC}"
pause pause
else 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 pause
continue continue
fi fi
@ -81,7 +97,7 @@ while true; do
# Ajout automatique au groupe "Administratifs" # Ajout automatique au groupe "Administratifs"
samba-tool group addmembers "Administratifs" "$username" samba-tool group addmembers "Administratifs" "$username"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo -e "${GREEN}Utilisateur ajout au groupe Administratifs.${NC}" echo -e "${GREEN}Utilisateur ajouté au groupe Administratifs.${NC}"
else else
echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe Administratifs.${NC}" echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe Administratifs.${NC}"
fi fi
@ -92,14 +108,14 @@ while true; do
echo "$groupes_disponibles" | nl 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 for group_index in $group_selections; do
group=$(echo "$groupes_disponibles" | sed -n "${group_index}p") group=$(echo "$groupes_disponibles" | sed -n "${group_index}p")
samba-tool group addmembers "$group" "$username" samba-tool group addmembers "$group" "$username"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo -e "${GREEN}Utilisateur ajout au groupe $group.${NC}" echo -e "${GREEN}Utilisateur ajouté au groupe $group.${NC}"
else else
echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}" echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}"
fi fi
@ -107,29 +123,27 @@ while true; do
pause pause
;; ;;
2) 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 ! user_exists "$username"; then
if [ $? -ne 0 ]; then
echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}"
pause pause
continue continue
fi 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 if [ "$confirmation" == "y" ]; then
samba-tool user disable "$username" samba-tool user disable "$username"
echo -e "${YELLOW}Compte $username d sactiv .${NC}" echo -e "${YELLOW}Compte $username désactivé.${NC}"
else else
echo -e "${RED}Op ration annul e.${NC}" echo -e "${RED}Opération annulée.${NC}"
fi fi
pause pause
;; ;;
3) 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 ! user_exists "$username"; then
if [ $? -ne 0 ]; then
echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}"
pause pause
continue continue
@ -138,76 +152,75 @@ while true; do
read -p "Voulez-vous vraiment supprimer le compte $username ? (y/n): " confirmation read -p "Voulez-vous vraiment supprimer le compte $username ? (y/n): " confirmation
if [ "$confirmation" == "y" ]; then if [ "$confirmation" == "y" ]; then
samba-tool user delete "$username" 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 else
echo -e "${RED}Op ration annul e.${NC}" echo -e "${RED}Opération annulée.${NC}"
fi fi
pause pause
;; ;;
4) 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 ! user_exists "$username"; then
if [ $? -ne 0 ]; then
echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}"
pause pause
continue continue
fi fi
new_password=$(generate_password) 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" echo "$new_password" | samba-tool user setpassword "$username"
if [ $? -eq 0 ]; then 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 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 fi
pause pause
;; ;;
5) 5)
read -p "Nom d'utilisateur à vérifier: " username read -p "Nom d'utilisateur à vérifier: " username
# Vérifier si l'utilisateur existe if ! user_exists "$username"; then
if ! samba-tool user show "$username" > /dev/null 2>&1; then
echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}"
pause pause
continue continue
fi fi
# Récupérer les informations détaillées # Récupérer les informations de l'utilisateur
user_info=$(samba-tool user show "$username" --attributes=all) user_info=$(samba-tool user show "$username")
# Afficher les informations principales de manière formatée # Afficher les informations principales de manière formatée
echo -e "${BLUE}Informations du compte utilisateur:${NC}" echo -e "${BLUE}Informations du compte utilisateur:${NC}"
echo "$user_info" | grep -E "displayName|userPrincipalName|mail|telephoneNumber|whenCreated|lastLogon" 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+')
# Vérification détaillée du statut # 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}" 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}" 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}" echo -e "${YELLOW}Statut : Mot de passe EXPIRÉ${NC}"
else else
echo -e "${GREEN}Statut : Compte ACTIF${NC}" echo -e "${GREEN}Statut : Compte ACTIF${NC}"
fi fi
# Afficher les groupes de l'utilisateur # Afficher les groupes de l'utilisateur
echo -e "\n${BLUE}Groupes:${NC}" 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 pause
;; ;;
6) 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 ! user_exists "$username"; then
if [ $? -ne 0 ]; then
echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}" echo -e "${RED}Erreur : L'utilisateur $username n'existe pas.${NC}"
pause pause
continue continue
@ -218,14 +231,14 @@ while true; do
echo "$groupes_disponibles" | nl 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 for group_index in $group_selections; do
group=$(echo "$groupes_disponibles" | sed -n "${group_index}p") group=$(echo "$groupes_disponibles" | sed -n "${group_index}p")
samba-tool group addmembers "$group" "$username" samba-tool group addmembers "$group" "$username"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo -e "${GREEN}Utilisateur ajout au groupe $group.${NC}" echo -e "${GREEN}Utilisateur ajouté au groupe $group.${NC}"
else else
echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}" echo -e "${RED}Erreur lors de l'ajout de l'utilisateur au groupe $group.${NC}"
fi fi
@ -242,7 +255,3 @@ while true; do
;; ;;
esac esac
done done