Update AD.sh
This commit is contained in:
parent
1c3d4c720b
commit
1b81db21f0
141
AD.sh
141
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/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
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue