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
# 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/urandom | head -c 12)"
}
# Pause jusqu' l'appui sur une touche
# Pause jusqu'à l'appui sur une touche
pause() {
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() {
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 "^(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
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