integ/ldap/openldap-config/files/initscript

101 lines
2.3 KiB
Bash
Executable File

#! /bin/sh
#
# This is an init script for openembedded
# Copy it to /etc/init.d/openldap and type
# > update-rc.d openldap defaults 60
#
. /etc/init.d/functions
################################################################################
# Wait for a process to stop running.
#
################################################################################
function wait_for_proc_stop()
{
PROGNAME=$1
TIMEOUT=${2:-"5"}
for I in $(seq 1 $TIMEOUT); do
PID=$(pidof $PROGNAME 2> /dev/null)
if [ $? -ne 0 ]; then
## already dead
return 0
fi
sleep 1
done
return 1
}
slapd=/usr/sbin/slapd
test -x "$slapd" || exit 0
RETVAL=0
case "$1" in
start)
echo -n "Starting SLAPD: "
if [ -f /etc/openldap/schema/cn=config.ldif ]; then
start-stop-daemon --start --oknodo --quiet --exec $slapd \
-- -F /etc/openldap/schema/
RETVAL=$?
else
start-stop-daemon --start --oknodo --quiet --exec $slapd
RETVAL=$?
fi
if [ $RETVAL -ne 0 ]; then
echo "Failed to start SLAPD."
exit $RETVAL
fi
# we need to start nscd service as part of this openldap
# init.d script since SM manages this as a service and both
# daemons should be running on a controller host
systemctl status nscd.service
if [ $? -ne 0 ]; then
echo -n "Starting NSCD: "
systemctl start nscd.service
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "Failed to start NSCD."
exit $RETVAL
fi
fi
echo "."
;;
stop)
echo -n "Stopping NSCD: "
systemctl stop nscd.service
rm -f /var/run/nscd/nscd.pid
echo -n "Stopping SLAPD: "
start-stop-daemon --retry 60 --stop --oknodo --quiet --pidfile /var/run/slapd.pid
RETVAL=$?
wait_for_proc_stop $slapd 10
WRETVAL=$?
while [ $WRETVAL -eq 1 ]; do
killproc $slapd
wait_for_proc_stop $slapd 10
WRETVAL=$?
done
rm -f /var/run/slapd.pid
echo "."
;;
status)
status $slapd
[ $? -eq 0 ] || exit $?
systemctl status nscd.service
[ $? -eq 0 ] || exit $?
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/openldap {start|stop|status|restart}"
exit 1
esac
exit $RETVAL