#!/bin/bash # GENERE par Set-OPS (role serveur_openldap). Ne pas editer a la main. # # SONDE « annuaire » — l'annuaire repond ET contient ses entrees # # Contrat : docs/supervision-conception.md (API des greffons Nagios) — une ligne, 0/1/2. # Mise en defaut PAR PARAMETRE : `serveur_openldap_sonde_minimum` (seuil impossible). set -uo pipefail BASE={{ serveur_openldap_sonde_base }} MINIMUM={{ serveur_openldap_sonde_minimum }} systemctl is-active --quiet slapd || { echo "L'annuaire (slapd) n'est pas actif."; exit 2; } # ON COMPTE LES ENTREES, ON NE SE CONTENTE PAS D'UNE REPONSE. Un annuaire vide repond # `success` a tout — c'est exactement le mensonge des sauvegardes vides : vert, et sans # contenu. Sans ce comptage, la sonde dirait « tout va bien » sur un annuaire efface. # `-Y EXTERNAL`, PAS `-x` (2026-09-13). La sonde lisait en ANONYME. Ca marchait tant que # l'annuaire etait ouvert a tous — c'est-a-dire tant qu'il avait le defaut qu'on vient de # corriger. Une fois la lecture anonyme fermee, un `-x` ne compte plus rien et la sonde # annonce un annuaire VIDE : la panne la plus grave, sur un annuaire parfaitement sain. # # `EXTERNAL` sur le socket unix identifie le root local, a qui les droits accordent la # lecture. Aucun secret, aucun reseau — ce que doit rester une sonde. n=$(ldapsearch -Y EXTERNAL -H ldapi:/// -b "${BASE}" -s sub '(objectClass=*)' dn 2>/dev/null | grep -c '^dn:') [[ "${n}" =~ ^[0-9]+$ ]] || { echo "L'annuaire ne repond pas sous ${BASE}."; exit 2; } if (( n < MINIMUM )); then echo "Annuaire a ${n} entree(s) sous ${BASE}, moins que le minimum attendu (${MINIMUM}) — plus personne ne s'authentifiera.|entrees=${n};${MINIMUM};;0;" exit 2 fi echo "Annuaire : ${n} entree(s) sous ${BASE}.|entrees=${n};${MINIMUM};;0;"