Super script de supervision, mais on peut encore l'améliorer.
Si au moins l'un des noms de machine (provider ou consumer) passés en paramètre est invalide ou si slapd n'est pas en cours d'exécution ou si le délai d'attente est dépassé, une exception non traitée sera déclenchée à la ligne 240 (data=self.search(basedn,'(objectclass=*)',['contextCSN'])
dans la fonction getContextCSN()
).
Si l'on utilise le paramètre --no-check-contextCSN
, alors l'exception sera déclenchée à la ligne 259 (res_id = self.con.search(basedn,ldap.SCOPE_SUBTREE,filter,attrs)
dans la fonction search()
).
Je propose donc de corriger la fonction search() qui est en commun entre les deux levées d'exception :
def search(self,basedn,filter,attrs):
try:
res_id = self.con.search(basedn,ldap.SCOPE_SUBTREE,filter,attrs)
except ldap.LDAPError, e:
if options.nagios:
print "UNKWNON - Failed to connect to %s" % srv
sys.exit(3)
else:
sys.exit(1)
[…]
Notons que, dans la dernière version de ce script, il faut peut-être aussi corriger la fonction paged_search()
. Je n'ai pas cette version-là en production, donc je ne m'hasarderai pas à proposer une correction.
Le script avec ma correction est disponible ici : check_syncrepl_extended.