#!/bin/bash BACKUP_DIR="/srv/backup-ldap" DATE=$(date +%d%m%Y%H%M%S) RETAIN_DAYS=31 DOMAINS=$(ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config "(olcSuffix=*)" olcSuffix | grep olcSuffix | awk '{print $2}') ENABLE_TELEGRAM="false" BOT_TOKEN="XXXXX:YYYYYYYYYY" CHAT_ID="XYXYXYXY" send_telegram() { local message=$1 if [[ "${ENABLE_TELEGRAM,,}" == "true" ]]; then curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \ -d "chat_id=$CHAT_ID" \ -d "text=$message" > /dev/null fi } if [[ ! -d "$BACKUP_DIR" ]]; then echo "Direktori $BACKUP_DIR tidak ditemukan. Membuat direktori..." mkdir -p "$BACKUP_DIR" else echo "Direktori backup sudah ada: $BACKUP_DIR" fi echo "Memulai backup OpenLDAP..." DETAIL_MSG="" STATUS_DATA=0 slapcat -n 0 -l "$BACKUP_DIR/config_$DATE.ldif" STATUS_CONF=$? if [[ $STATUS_CONF -eq 0 ]]; then CONF_TEXT="✅ Config: Berhasil" else CONF_TEXT="❌ Config: Gagal" fi for DN in $DOMAINS; do FILENAME=$(echo $DN | sed 's/dc=//g;s/,/_/g') slapcat -b "$DN" -l "$BACKUP_DIR/${FILENAME}_$DATE.ldif" if [[ $? -eq 0 ]]; then DETAIL_MSG+="%0A- $DN: Berhasil" else DETAIL_MSG+="%0A- $DN: Gagal" STATUS_DATA=1 fi done if [[ $STATUS_CONF -eq 0 ]] && [[ $STATUS_DATA -eq 0 ]]; then MSG="✅ Backup OpenLDAP $(date '+%d %B %Y') Sukses!%0A$CONF_TEXT%0AList Domain:$DETAIL_MSG%0AWaktu: $(date +'%H:%M:%S')" echo "[✔] Backup Sukses." send_telegram "$MSG" else MSG="❌ ALERT: Backup OpenLDAP $(date '+%d %B %Y') Bermasalah!%0A$CONF_TEXT%0AList Domain:$DETAIL_MSG%0ASegera cek dan backup ulang server OpenLDAP" echo "[✘] Backup Ada Yang Gagal!" send_telegram "$MSG" fi find "$BACKUP_DIR" -name "*.ldif" -type f -mtime +$RETAIN_DAYS -delete echo "Proses selesai."