#!/bin/bash # GENERE par Set-OPS (role serveur_dns_public). Ne pas editer a la main. # # SONDE « zones-publiques » — le serveur public sert-il TOUTES les zones qu'il doit servir ? # # Contrat : docs/supervision-conception.md (API des greffons Nagios) — une ligne, 0/1/2. # Mise en defaut PAR PARAMETRE : `serveur_dns_public_sonde_attendu` (seuil impossible). set -uo pipefail ATTENDU={{ serveur_dns_public_sonde_attendu }} ICI={{ serveur_dns_public_ecoute }} systemctl is-active --quiet pdns || { echo "Le serveur DNS public (pdns) n'est pas actif."; exit 2; } # ON INTERROGE CE QUE LE MONDE INTERROGERA : le SOA de chaque zone, sur l'adresse d'ecoute. # Un secondaire qui n'a jamais recu sa zone repond REFUSED ou SERVFAIL — ce qui, vu d'un # registraire, se lit « serveur de noms defaillant ». servies=0 manquantes=() {% for zone in serveur_dns_public_relations | map(attribute='zones') | flatten %} if [[ -n "$(dig +short +time=3 +tries=1 @"${ICI}" -p {{ serveur_dns_public_port }} SOA {{ zone }} 2>/dev/null)" ]]; then servies=$((servies + 1)) else manquantes+=("{{ zone }}") fi {% endfor %} if (( servies < ATTENDU )); then echo "Le serveur public ne sert que ${servies} zone(s) sur ${ATTENDU} : ${manquantes[*]:-?} — ces domaines ne resolvent plus depuis Internet.|zones=${servies};${ATTENDU};;0;" exit 2 fi echo "Serveur public : ${servies} zone(s) servie(s) sur ${ATTENDU}.|zones=${servies};${ATTENDU};;0;"