Ldap dump

De BlaxWiki
Aller à la navigationAller à la recherche

Ce script de dump est avancé, avec une rétention et purge des dumps. La fonction "send" est propre à la supervision sur cette plateforme et doit être supprimée (ou à adapter pour remonter une info).

  • Infos supplémentaires :

Le backup d'un openldap utilisant ldbm ne peut se faire qu'a froid. Le support ldbm a d'ailleurs été supprime d'openldap 2.4 en partie en raison des problemes lies a l'utilisation de ce format (ce qui est notre cas ici). Sinon il faut convertir la base en bdb pour backuper à chaud

# Declaration des variables :
DATE=`date +%Y-%m-%d`
VISION="/opt/agarik/Vision/bin/bb_send_raw"
DISPLAY="supervision.agarik.com" # verifier si present dans /etc/host
TARGET="$(hostname | sed -e 's/\./,/g')"
SERVICE="backup"
BASEDN="dc=cned,dc=fr" # ligne "suffix" dans slapd.conf
ROOTDN="uid=root,dc=cned,dc=fr" # ligne "rootdn" dans slapd.conf
ROOTPW="uIpmul3r" # ligne "rootpw" dans slapd.conf
DESTDIR="/var/ldap_backup/CURRENT"
OLDESTDIR="/var/ldap_backup/OLD"
LOGDIR="/var/log/"
BIN_LDAPSEARCH="/opt/applis/openldap/bin/ldapsearch"
BIN_TMPWATCH="/usr/sbin/tmpwatch"
BIN_MKDIR="/bin/mkdir"
BIN_MV="/bin/mv"
LIFE_MESSAGE="1560"
RETENTION_TIME="192" # en heures

# Supervision
Send(){
        "${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
}

# Execution du dump :
exec 1> $LOGDIR/slapdump.ok
exec 2> $LOGDIR/slapdump.error

for binary in $BIN_LDAPSEARCH $BIN_TMPWATCH $BIN_MKDIR $BIN_MV; do
        if [ ! -f $binary -a ! -x $binary ]; then
                echo "Attention probleme lors du dump de cette nuit ! $binary n'existe pas" > $LOGDIR/slapdump.error
                color="red"
                Send "${color}" "$(cat $LOGDIR/slapdump.error)"
                exit 1
        fi
done

if [ ! -d $DESTDIR ]; then $BIN_MKDIR -p $DESTDIR;
        if [ $? != 0 ]; then
                echo "Attention probleme lors du dump de cette nuit ! Répertoire de destination $DESTDIR du dump impossible à  créer" > $LOGDIR/slapdump.error
                color="red"
                Send "${color}" "$(cat $LOGDIR/slapdump.error)"
                exit 1
        fi
fi

if [ ! -d $OLDESTDIR ]; then $BIN_MKDIR -p $OLDESTDIR;
        if [ $? != 0 ]; then
                echo "Attention probleme lors du dump de cette nuit ! Répertoire de destination $OLDESTDIR des dumps impossible à  créer" > $LOGDIR/slapdump.error
                color="red"
                Send "${color}" "$(cat $LOGDIR/slapdump.error)"
                exit 1
        fi
fi

#  Purge des anciens dumps :
$BIN_TMPWATCH --mtime $RETENTION_TIME $OLDESTDIR

# Deplacement du dump de la veille dans OLD :
$BIN_MV $DESTDIR/* $OLDESTDIR/

# Backup
$BIN_LDAPSEARCH -x -D "$ROOTDN" -w "$ROOTPW" -b "$BASEDN" -LLL | gzip -9 > "${DESTDIR}/$( echo "$BASEDN" | sed -e 's/dc=//g' -e 's/,/./g').${DATE}.ldif"
if [ $? -ne 0 -o -s "$LOGDIR/slapdump.error" ]; then
        echo "Attention probleme lors du dump de cette nuit!"
        color="red"
        Send "${color}" "$(cat "$LOGDIR/slapdump.error")"
        exit 1
fi

# Vérification
if [ `find $DESTDIR  -type f | wc -l` -gt 0 -a "`du -ks $DESTDIR | awk {'print $1'}`" -gt 4 ] ; then
        echo "dump du schema OK"
else
        echo "Attention probleme lors des dumps de cette nuit. Il n'y aucun schema backupé ou leur taille est de zero" >> $LOGDIR/slapdump.error
        color="red"
        Send "${color}" "$(cat "$LOGDIR/slapdump.error")"
        exit 1
fi

echo "$(ls -lh "$DESTDIR")"
color="green"
Send "${color}" "$(cat "$LOGDIR/slapdump.ok")"
exit 0