= Script: Bash: TDS LDAP Restore =
**Summary**: How to restore data into Tivoli Directory Server. \\
**Date**: Around 2010 \\
**Refactor**: 29 April 2025: Checked links and formatting. \\
{{tag>aix ldap bash}}
Below you'll find a script I've used to restore LDAP data which was backup with this script: [[tdsldapbackup]].
#!/bin/bash
#set -x
### Export HOME and APP Settings
export LDAP_INSTANCE=idsfop
export LDAP_HOME=/opt/IBM/ldap/V6.0
export LDAPSEARCH="${LDAP_HOME}/bin/ldapsearch"
export APPDIR=$LDAP_HOME
### Read LDAP Restore Instance Settings
LDAPUSER1="cn=Directory Manager"
LDAPBASE1="o=organization.nl"
echo
echo "Please provide Directory Admin DN [$LDAPUSER1]:"
read LDAPUSER
echo
echo "Directory Admin password:"
read LDAPPASS
echo
echo "Please provide application base DN [$LDAPBASE1]:"
read LDAPBASE
echo
echo "Please provide password of db2 user account (UNIX):"
read DB2PASS
### If LDAPUSER is empty then use default setting
if [ -z "$LDAPUSER" ]; then
LDAPUSER="$LDAPUSER1"
echo "LDAP user being used = $LDAPUSER1"
fi
### If LDAPBASE is empty then use default setting
if [ -z "$LDAPBASE" ]; then
LDAPBASE="$LDAPBASE1"
echo "LDAP base being used = $LDAPBASE1"
fi
### Get live DB2 Settings
getConfigValueFromLdap() {
$LDAPSEARCH -D "$LDAPUSER" -w $LDAPPASS -h localhost -s base -b "cn=Directory,cn=RDBM Backends,cn=IBM Directory,cn=Schemas,cn=Configuration" '(objectclass=*)' $1 | grep $1 | awk -F= '{ print $2 }'
}
echo
DB2USER=`getConfigValueFromLdap ibm-slapdDbUserID`
echo "DB2 User being used = $DB2USER"
DB2INSTANCE=`getConfigValueFromLdap ibm-slapdDbInstance`
echo "DB2 Instance being used = $DB2INSTANCE"
LDAPDB=`getConfigValueFromLdap ibm-slapdDbName`
echo "LDAP DB being used = $LDAPDB"
DBLOCATION=`getConfigValueFromLdap ibm-slapdDbLocation`
echo "DB Location = $DBLOCATION"
### Check for empty variables
if [ -z "$DB2USER" -o -z "$DB2INSTANCE" -o -z "$LDAPDB" -o -z "$DBLOCATION" ]; then
echo
echo "`tput bold``tput smul`ERROR - Could not retreive configuration setting from LDAP, ABORTING!`tput sgr0`"
echo
echo "Possible causes: "
echo " - incorrect credentials (Directory Admin)"
echo " - incorrect application DN provided"
echo " - Directory server not running or reachable"
echo
exit 1
fi
restoreLdap() {
echo "INFO - Stopping LDAP"
echo ${APPDIR}/sbin/idsslapd -I $LDAP_INSTANCE -k
echo "INFO -Removing suffix $LDAPBASE"
echo ${APPDIR}/sbin/idsucfgsuf -I $LDAP_INSTANCE -n -s $LDAPBASE
echo "INFO - Dropping instance $LDAP_INSTANCE"
echo ${APPDIR}/sbin/idsucfgdb -I $LDAP_INSTANCE -n -r
echo "INFO - Creating instance $LDAP_INSTANCE"
echo ${APPDIR}/sbin/idscfgdb -I $LDAP_INSTANCE -n -a $DB2USER -l $DBLOCATION -t $LDAPDB -w $DB2PASS
echo "INFO -Adding suffix $LDAPBASE"
echo ${APPDIR}/sbin/idscfgsuf -I $LDAP_INSTANCE -n -s $LDAPBASE
echo "INFO - Importing LDAP data..."
echo ${APPDIR}/sbin/bulkload -I $LDAP_INSTANCE -i $LDIFFILE -a parse_and_load
echo "INFO - Starting LDAP"
echo ${APPDIR}/sbin/idsslapd -I $LDAP_INSTANCE
}
usageCommand() {
echo
echo "Usage $0 COMMAND:"
echo "--------------------------------------"
echo "`tput bold``tput smul`$0 restore "restorefile"`tput sgr0`"
echo "--------------------------------------"
echo
}
case "$1" in
restore )
if [ ! -z "$2" ]; then
if [ -f "$2" ]; then
LDIFFILE=$2
echo "LDAP file being used = $LDIFFILE"
restoreLdap
else
echo
echo "The restorefile provided does not exist"
echo "Please provide the full path to the restore file"
echo
usageCommand
exit 1
fi
else
echo
echo "Please provide the full path to the restore file"
echo
usageCommand
exit 1
fi
;;
* )
usageCommand
exit 1
;;
esac
echo
echo "INFO - LDAP restore finished"
echo
//This wiki has been made possible by://