#!/bin/bash # Jean Luc BIELLMANN - contact@alsatux.com # Généré via ChatGPT if [ -f ./samba.conf ]; then source ./samba.conf else echo "Fichier samba.conf introuvable !" exit 1 fi group_list() { while true; do clear echo "=== Groupes Samba ===" echo "" echo " 0. Afficher les principales clés LDAP usuelles" mapfile -t groupes < <(samba-tool group list | sort) for i in "${!groupes[@]}"; do printf " %2d. %s\n" $((i+1)) "${groupes[i]}" done echo -n "Numéro du groupe à éditer [Entrée pour retour] : " read grpnum if [[ -z "$grpnum" ]]; then break elif [[ "$grpnum" == "0" ]]; then group_attributes elif [[ "$grpnum" =~ ^[0-9]+$ ]] && ((grpnum>=1 && grpnum<=${#groupes[@]})); then group_edit "${groupes[grpnum-1]}" else echo "Choix invalide"; sleep 1 fi done } group_attributes() { echo "Principales clés LDAP pour un groupe :" echo " - cn : Nom du groupe" echo " - description : Description" echo " - member : Membres du groupe (DNs)" echo " - sAMAccountName : Nom du compte (Windows)" echo " - mail : Email (si applicable)" echo " - ...etc." read -p "Appuyez sur Entrée pour retour..." } group_edit() { local groupname="$1" local dnow=$(date +%Y%m%d_%H%M%S) local bakfile="$LDIFDIR/${groupname}.${dnow}.bak" samba-tool group show "$groupname" > "$bakfile" samba-tool group edit "$groupname" echo "Modifications réinjectées. Sauvegarde : $bakfile" read -p "Appuyez sur Entrée pour continuer..." } groups_menu() { while true; do clear echo "=== Gestion des groupes Samba ===" echo "" echo "Que souhaitez-vous faire ?" echo "1. Afficher la liste des groupes Samba" echo "2. Ajouter un groupe Samba" echo "3. Supprimer un groupe Samba" echo "4. Ajouter un utilisateur à un groupe Samba" echo "5. Supprimer un utilisateur d'un groupe Samba" echo "6. Afficher les membres d'un groupe Samba" echo "" echo -n "Votre choix [Entrée pour retour] : " read choice echo "" case $choice in 1) echo "Liste des groupes Samba :" group_list ;; 2) read -p "Entrez le nom du groupe à ajouter : " groupname samba-tool group add $groupname ;; 3) read -p "Entrez le nom du groupe à supprimer : " groupname samba-tool group delete $groupname ;; 4) read -p "Entrez le nom de l'utilisateur : " username read -p "Entrez le nom du groupe : " groupname samba-tool group addmembers $groupname $username ;; 5) read -p "Entrez le nom de l'utilisateur : " username read -p "Entrez le nom du groupe : " groupname samba-tool group removemembers $groupname $username ;; 6) read -p "Entrez le nom du groupe : " groupname echo "Membres du groupe $groupname :" samba-tool group listmembers $groupname ;; "") break ;; *) echo "Choix non valide. Veuillez réessayer." ;; esac read -n 1 -s -r -p "Appuyez sur une touche pour continuer..." done } groups_menu