#! /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