A custom script that was used in a Menu System for a couple of clients.

Primary Purpose#

This script performs a ndsrepair -R -l and redirects the output to the /var/nds/autodsrp.log. The LDAPBuild Process distribute the file to:

Deployed Location#

The LDAPBuild Process distribute the <buildhome>Directory-Info.com/config/autodsrp.sh file to /usr/bin/autodsrp.sh

Method of Execution #

The script is run via cron.tab


The script creates a log file /var/nds/autodsrp.log.

In addtion, the script writes a log file to /var/nds/autodsrp.csv.

Other Notable Features#

The Tivoli agent monitors the /var/nds/autodsrp.log for the word "ERROR:" and sends an alert containing the line.

NOTE:Check file in the NDSBuild directory for the latest version.

Typical script content as implemented is shown below as of: 2005-07-29.

# Modification history:
# 12/6/2002-- Added Y-m-d to BEGIN and END tag in the log
# 2/25/2003-- Fixed undesired logging to /var/b1nds.log
#             Removed SUDO from command line (ndsuser can now directly
#              execute ndsrepair)
#             Converted to use printf instead of echo (different handling of
#              backslach characters in bash)
# 11/13/2003-- Checkd for 8.7.1
# 4/5/2004 -- Fixed DOS cr/lf problem
# 1/24/2005-- Significantly improved logging

if [ -f /var/nds/.ndsenv ]
	. /var/nds/.ndsenv_functions
  	. /var/nds/.ndsenv
  	printf "\nMissing /var/nds/.ndsenv -- cannot run!\n"
  	exit 1

# Ignore hangup -- may be an issue when running with a large DIB
trap ' ' 1

# Turn off normal logging as ndsrepair output will go to autodsrp.log
# Specifiy location for autodsrp run history will go

# BEGIN Main routine
f_write_and_log "\n`date '+%Y-%m-%d %H:%M:%S'`: BEGIN $0\n"

# 'ndsrepair' switches used here
# -R		Repair the Local Database
# -A no	Resets the ndsrepair.log file (keeps the log from growing out of control)
# -l yes	Locks the eDirectory  database during the repair operation
# By default -i, -d, -t, -r,  -v and -c options are set.  Their meanings are listed below:
# -d		Rebuilds the entire database
# -t		Performs  a   tree   structure check
# -i		Checks the eDirectory database structure and the index
# -r		Repairs all the local replicas
# -v		Validates the stream files
# -c		Checks local references

# Rotate previous log files
if [ -f $edirPATH/autodsrp.5.log ]; then rm $edirPATH/autodsrp.5.log; fi
if [ -f $edirPATH/autodsrp.4.log ]; then mv $edirPATH/autodsrp.4.log $edirPATH/autodsrp.5.log; fi
if [ -f $edirPATH/autodsrp.3.log ]; then mv $edirPATH/autodsrp.3.log $edirPATH/autodsrp.4.log; fi
if [ -f $edirPATH/autodsrp.2.log ]; then mv $edirPATH/autodsrp.2.log $edirPATH/autodsrp.3.log; fi
if [ -f $edirPATH/autodsrp.1.log ]; then mv $edirPATH/autodsrp.1.log $edirPATH/autodsrp.2.log; fi
if [ -f $edirPATH/autodsrp.log ]; then mv $edirPATH/autodsrp.log $edirPATH/autodsrp.1.log; fi

# Record start time
startTime=`date '+%Y-%m-%d %I:%M:%S %p'`
# Execute the ndsrepair process
$bindir/ndsrepair -R -l no -F $edirPATH/autodsrp.log -A no>/dev/null
# Record end time
endTime=`date '+%Y-%m-%d %I:%M:%S %p'`
# Parse other "interesting" details from the log file
dibOjbs=`grep "Total Objects in Database" $edirPATH/autodsrp.log | cut -d: -f2 | tr -d " "`
result=`grep "Repair process" /var/nds/autodsrp.log | tail -1`
# Write history log
printf "`hostname`,\"$startTime\",\"$endTime\",$dibOjbs,\"$result\"\n"
printf "`hostname`,\"$startTime\",\"$endTime\",$dibOjbs,\"$result\"\n">>$log_history

f_write_and_log "\n`date '+%Y-%m-%d %H:%M:%S'`: END $0\n"

More Information#

There might be more information for this subject on one of the following: