#!/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 contacts_list() { while true; do clear echo "=== Contacts Samba ===" echo "" echo " 0. Afficher les principales clés LDAP usuelles" mapfile -t contacts < <(samba-tool contact list | sort) for i in "${!contacts[@]}"; do printf " %2d. %s\n" $((i+1)) "${contacts[i]}" done echo -n "Numéro du contact à éditer [Entrée pour retour] : " read contactnum if [[ -z "$contactnum" ]]; then break elif [[ "$contactnum" == "0" ]]; then contact_attributes elif [[ "$contactnum" =~ ^[0-9]+$ ]] && ((contactnum>=1 && contactnum<=${#contacts[@]})); then contact_edit "${contacts[contactnum-1]}" else echo "Choix invalide"; sleep 1 fi done } contact_attributes() { cat < "$bakfile" samba-tool contact edit "$username" echo "Modifications réinjectées. Sauvegarde : $bakfile" read -p "Appuyez sur Entrée pour continuer..." } contact_search() { read -p "Mot-clé à rechercher : " keyword if [[ -z "$keyword" ]]; then echo "Aucun mot-clé saisi." read -p "Entrée pour retour..."; return fi echo "=== Résultats de la recherche : $keyword ===" ldbsearch -H "$SAMDB" "(&(objectClass=contact)(|(cn=*$keyword*)(mail=*$keyword*)(description=*$keyword*)))" cn mail description | grep -E '^cn:|^mail:|^description:' read -p "Entrée pour retour..." } contacts_menu() { while true; do clear echo "=== Gestion des contacts Samba ===" echo "" echo "Que souhaitez-vous faire ?" echo "1. Afficher la liste des contacts" echo "2. Ajouter un contact" echo "3. Supprimer un contact" echo "4. Activer un contact" echo "5. Désactiver un contact" echo "6. Rechercher un contact" echo "" echo -n "Votre choix [Entrée pour retour] : " read choice echo "" case $choice in 1) echo "Liste des contacts :" contacts_list ;; 2) read -p "Entrez le nom du contact à ajouter : " username samba-tool contact add $username ;; 3) read -p "Entrez le nom du contact à supprimer : " contactname samba-tool contact delete $contactname ;; 4) read -p "Entrez le nom du contact à activer : " contactname samba-tool contact enable $contactname ;; 5) read -p "Entrez le nom du contact à désactiver : " contactname samba-tool contact disable $contactname ;; 6) echo "Rechercher un contact :" contact_search ;; "") break ;; *) echo "Choix non valide. Veuillez réessayer." ;; esac read -n 1 -s -r -p "Appuyez sur une touche pour continuer..." done } contacts_menu