Différences entre les versions de « Ldap dump »
De BlaxWiki
Aller à la navigationAller à la recherchem (Admin a déplacé la page Openldap dump vers Ldap dump) |
|||
| (Une version intermédiaire par un autre utilisateur non affichée) | |||
| Ligne 7 : | Ligne 7 : | ||
<pre> | <pre> | ||
# | # Declaration des variables : | ||
DATE=`date +%Y-%m-%d` | DATE=`date +%Y-%m-%d` | ||
VISION="/opt/agarik/Vision/bin/bb_send_raw" | VISION="/opt/agarik/Vision/bin/bb_send_raw" | ||
DISPLAY="supervision.agarik.com" | DISPLAY="supervision.agarik.com" # verifier si present dans /etc/host | ||
TARGET="$(hostname | sed -e 's/\./,/g')" | 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" | LIFE_MESSAGE="1560" | ||
RETENTION_TIME="192" # en heures | RETENTION_TIME="192" # en heures | ||
# Supervision | # Supervision | ||
Send() | Send(){ | ||
{ | "${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}" | ||
} | } | ||
# Execution du dump : | # Execution du dump : | ||
exec 1> $LOGDIR/ | exec 1> $LOGDIR/slapdump.ok | ||
exec 2> $LOGDIR/ | 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 [ $ | if [ ! -d $OLDESTDIR ]; then $BIN_MKDIR -p $OLDESTDIR; | ||
then | 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 | 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 " | echo "$(ls -lh "$DESTDIR")" | ||
color="green" | color="green" | ||
Send "${color}" "$(cat $LOGDIR/ | Send "${color}" "$(cat "$LOGDIR/slapdump.ok")" | ||
exit 0 | exit 0 | ||
</pre> | </pre> | ||
[[Catégorie:Script]] | [[Catégorie:Script]] | ||
Version actuelle datée du 17 septembre 2018 à 09:38
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