33 lines
1.4 KiB
Text
33 lines
1.4 KiB
Text
|
|
#!/bin/bash
|
||
|
|
# GENERE par Set-OPS (role serveur_resolveur). Ne pas editer a la main.
|
||
|
|
#
|
||
|
|
# SONDE « resolution » — il resout la zone interne ET l'Internet
|
||
|
|
#
|
||
|
|
# Contrat : docs/supervision-conception.md (API des greffons Nagios) — une ligne, 0/1/2.
|
||
|
|
# Mise en defaut PAR PARAMETRE : `serveur_resolveur_sonde_nom_interne` / `_nom_public` (noms inexistants).
|
||
|
|
set -uo pipefail
|
||
|
|
|
||
|
|
INTERNE={{ serveur_resolveur_sonde_nom_interne }}
|
||
|
|
PUBLIC={{ serveur_resolveur_sonde_nom_public }}
|
||
|
|
DELAI={{ serveur_resolveur_sonde_delai }}
|
||
|
|
|
||
|
|
# ON INTERROGE LA LOOPBACK, PAS `getent`. `getent` passerait par le plancher
|
||
|
|
# /etc/hosts et rendrait une reponse alors que le resolveur est mort — un vert sur un
|
||
|
|
# service eteint. On demande donc au demon lui-meme.
|
||
|
|
r1=$(dig +short +time=${DELAI} +tries=1 @127.0.0.1 "${INTERNE}" 2>/dev/null | head -1)
|
||
|
|
r2=$(dig +short +time=${DELAI} +tries=1 @127.0.0.1 "${PUBLIC}" 2>/dev/null | head -1)
|
||
|
|
|
||
|
|
if [[ -z "${r1}" && -z "${r2}" ]]; then
|
||
|
|
echo "Le resolveur ne repond ni pour ${INTERNE} ni pour ${PUBLIC} — il est muet."
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
if [[ -z "${r1}" ]]; then
|
||
|
|
echo "Zone interne MUETTE (${INTERNE}) — l'ecosysteme ne se resout plus lui-meme ; l'Internet repond (${PUBLIC} -> ${r2})."
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
if [[ -z "${r2}" ]]; then
|
||
|
|
echo "Recursion MUETTE (${PUBLIC}) — la zone interne repond (${INTERNE} -> ${r1}), mais rien du dehors."
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
echo "Resolution : ${INTERNE} -> ${r1}, ${PUBLIC} -> ${r2}."
|