#!/bin/bash # Synchronise les entrées A d'une zone directe DNS Samba avec la zone inverse correspondante # 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 echo "Vérification zone inverse..." # Crée la zone inverse si elle n'existe pas if ! samba-tool dns zoneinfo $ADSERVER $REVERSE $SAMBA_AUTH_OPTS &>/dev/null; then echo "Création de la zone inverse $REVERSE" samba-tool dns zonecreate $ADSERVER $REVERSE $SAMBA_AUTH_OPTS fi echo "Mise à jour des enregistrements..." current_name="" samba-tool dns query $ADSERVER $DNSZONE @ ALL $SAMBA_AUTH_OPTS | \ while read -r line; do # Si nouvelle entrée Name= if [[ "$line" =~ ^[[:space:]]*Name= ]]; then # Récupère le vrai nom (jusqu'à la première virgule) temp="${line##*Name=}" current_name="${temp%%,*}" # Nettoie current_name="${current_name// /}" [[ "$current_name" == "" ]] && current_name="@" # Si enregistrement A: elif [[ "$line" =~ ^[[:space:]]*A: ]]; then ip=$(echo "$line" | sed -n 's/.*A: *\([0-9.]*\).*/\1/p') [[ -z "$ip" ]] && continue fqdn="$current_name.$DNSZONE" [[ "$current_name" == "@" ]] && fqdn="$DNSZONE" # Ajoute le . final pour le FQDN fqdn="${fqdn}." ptr_short=$(echo "$ip" | awk -F. '{print $4}') # Vérifie si le PTR existe déjà exist=$(samba-tool dns query $ADSERVER $REVERSE $ptr_short PTR $SAMBA_AUTH_OPTS 2>/dev/null | grep -w "$fqdn") if [[ -z "$exist" ]]; then echo "Ajout de $ptr_short.$REVERSE PTR $fqdn" samba-tool dns add $ADSERVER $REVERSE $ptr_short PTR "$fqdn" $SAMBA_AUTH_OPTS else echo "PTR pour $ip existe déjà ($fqdn)" fi fi done echo "Synchronisation terminée."