amélioration du PTR
This commit is contained in:
parent
fa1fa6f1aa
commit
f5c7214107
scripts/server-dhcp
|
@ -51,6 +51,14 @@ get_fqdn() {
|
|||
fi
|
||||
}
|
||||
|
||||
|
||||
# Fonction pour obtenir le FQDN réel avec `host`
|
||||
get_actual_fqdn() {
|
||||
local ip="$1"
|
||||
local actual_fqdn=$(host "$ip" | awk '/domain name pointer/ {print $5}' | sed 's/\.$//')
|
||||
echo "$actual_fqdn"
|
||||
}
|
||||
|
||||
# Fonction pour vérifier si un hostname est déjà enregistré
|
||||
is_hostname_registered() {
|
||||
local hostname="$1"
|
||||
|
@ -60,6 +68,8 @@ is_hostname_registered() {
|
|||
|
||||
# Variable pour suivre si un changement a été fait
|
||||
MODIFIED=0
|
||||
MODIFIED_BY_HOSTNAME=0
|
||||
MODIFIED_BY_FQDN=0
|
||||
|
||||
# Vérifier si l'IP existe déjà dans le fichier
|
||||
EXISTING_HOSTNAMES=($(grep -E "address=/[^ ]+/$IP$" "$DNSMASQ_CONF" | sed -E "s/address=\/([^\/]+)\/$IP/\1/"))
|
||||
|
@ -78,11 +88,17 @@ for HOSTNAME in "${HOSTNAMES[@]}"; do
|
|||
if is_hostname_registered "$FQDN"; then
|
||||
echo "L'association $FQDN -> $IP existe déjà."
|
||||
else
|
||||
read -p "Le FQDN $FQDN n'est pas dans la liste. Voulez-vous l'ajouter ? (o/n) " REPLY
|
||||
read -t 5 -p "Le FQDN $FQDN n'est pas dans la liste. Voulez-vous l'ajouter ? (o/N) 5s " REPLY
|
||||
# Si aucune entrée n'est faite dans le délai imparti, on met "n" par défaut
|
||||
if [[ -z "$REPLY" ]]; then
|
||||
REPLY="n"
|
||||
echo -e "\nTemps écoulé. Réponse par défaut : n"
|
||||
fi
|
||||
if [[ "$REPLY" =~ ^[Oo]$ ]]; then
|
||||
echo "address=/$FQDN/$IP" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout de : $FQDN -> $IP"
|
||||
MODIFIED=1
|
||||
MODIFIED_BY_FQDN=1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -92,27 +108,60 @@ for HOSTNAME in "${HOSTNAMES[@]}"; do
|
|||
echo "address=/$HOSTNAME/$IP" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout de : $HOSTNAME -> $IP"
|
||||
MODIFIED=1
|
||||
MODIFIED_BY_HOSTNAME=1
|
||||
fi
|
||||
|
||||
# Vérification et ajout du PTR record
|
||||
PTR_RECORD=$(get_ptr_record "$IP")
|
||||
EXISTING_PTR=$(grep -E "ptr-record=$PTR_RECORD," "$DNSMASQ_CONF" | cut -d'=' -f2)
|
||||
|
||||
if [[ $MODIFIED -eq 1 ]]; then
|
||||
# Déterminer $ACTUAL_FQDN
|
||||
test $MODIFIED_BY_HOSTNAME -eq 1 && ACTUAL_FQDN=$HOSTNAME
|
||||
if is_hostname_registered "$FQDN"; then
|
||||
ACTUAL_FQDN=$FQDN
|
||||
fi
|
||||
test $MODIFIED_BY_FQDN -eq 1 && ACTUAL_FQDN=$FQDN
|
||||
else
|
||||
ACTUAL_FQDN=""
|
||||
|
||||
if is_hostname_registered "$HOSTNAME"; then
|
||||
ACTUAL_FQDN=$HOSTNAME
|
||||
fi
|
||||
if is_hostname_registered "$FQDN"; then
|
||||
ACTUAL_FQDN=$FQDN
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si ACTUAL_FQDN n'est pas vide, alors
|
||||
if [[ -n "$ACTUAL_FQDN" ]]; then
|
||||
# Si l'enregistrement actuel ne correspond pas déjà à $ACTUAL_FQDN, procéder à la mise à jour
|
||||
if [[ "$(get_actual_fqdn "$IP")" != "$ACTUAL_FQDN" ]]; then
|
||||
if [[ -n "$EXISTING_PTR" ]]; then
|
||||
if [[ "$EXISTING_PTR" != "ptr-record=$PTR_RECORD,$ACTUAL_FQDN" ]]; then
|
||||
read -t 5 -p "Voulez-vous le remplacer ? (o/N) 5s " REPLY
|
||||
if [[ -z "$REPLY" ]]; then
|
||||
REPLY="n"
|
||||
echo -e "\nTemps écoulé. Réponse par défaut : n"
|
||||
fi
|
||||
if [[ "$REPLY" =~ ^[Oo]$ ]]; then
|
||||
sed -i "/ptr-record=$PTR_RECORD/d" "$DNSMASQ_CONF"
|
||||
echo "ptr-record=$PTR_RECORD,${ACTUAL_FQDN}" >> "$DNSMASQ_CONF"
|
||||
echo "PTR mis à jour : $PTR_RECORD -> ${ACTUAL_FQDN}"
|
||||
MODIFIED=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "ptr-record=$PTR_RECORD,${ACTUAL_FQDN}" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout du PTR : $PTR_RECORD -> ${ACTUAL_FQDN}"
|
||||
MODIFIED=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
# Vérification et ajout du PTR record
|
||||
PTR_RECORD=$(get_ptr_record "$IP")
|
||||
EXISTING_PTR=$(grep -E "ptr-record=$PTR_RECORD," "$DNSMASQ_CONF" | cut -d'=' -f2)
|
||||
if [[ -n "$EXISTING_PTR" ]]; then
|
||||
echo "Un enregistrement PTR existant a été trouvé : $EXISTING_PTR"
|
||||
read -p "Voulez-vous le remplacer ? (o/n) " REPLY
|
||||
if [[ "$REPLY" =~ ^[Oo]$ ]]; then
|
||||
sed -i "/ptr-record=$PTR_RECORD/d" "$DNSMASQ_CONF"
|
||||
echo "ptr-record=$PTR_RECORD,${HOSTNAMES[0]}" >> "$DNSMASQ_CONF"
|
||||
echo "PTR mis à jour : $PTR_RECORD -> ${HOSTNAMES[0]}"
|
||||
MODIFIED=1
|
||||
fi
|
||||
else
|
||||
echo "ptr-record=$PTR_RECORD,${HOSTNAMES[0]}" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout du PTR : $PTR_RECORD -> ${HOSTNAMES[0]}"
|
||||
MODIFIED=1
|
||||
fi
|
||||
|
||||
|
||||
# Redémarrer dnsmasq seulement si des changements ont été faits
|
||||
if [[ $MODIFIED -eq 1 ]]; then
|
||||
|
|
Loading…
Reference in New Issue