home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / ldap / root / usr / bin / ldapstop / ldapstop~
Text File  |  1998-08-19  |  3KB  |  138 lines

  1. #!/usr/bin/ksh
  2. #==============================================================================
  3. # ldapstop
  4. # ~~~~~~~~
  5. #
  6. # EXIT STATES
  7. #
  8. #    100 - Cannot include ldaptabProcedures
  9. #    185 - Must be root to execute this command
  10. #    186 - Invalid arguments to ldapstop
  11. #
  12. #------------------------------------------------------------------------------
  13.  
  14. LDAPTABPROCS=/usr/lib/ldap/ldaptabProcedures
  15. PIDDIR=/var/ldap/pid
  16. LDAPINFO=/usr/lib/ldap/ldapinfo
  17. SLAPD=/usr/lib/ldap/slapd
  18.  
  19. #Check permissions to run this command
  20. UID=$(/usr/bin/id -u)
  21. if [ "$UID" != 0 ]
  22. then
  23.     pfmt  -s info -g ldapmisc:2 "You must be root to run this command\n"
  24.     exit 185
  25. fi
  26.  
  27. if [ -f $LDAPTABPROCS ]
  28. then
  29.         . $LDAPTABPROCS
  30. else
  31.     pfmt -s halt -g ldapmisc:3 "Fatal error, cannot find file %s\n" "$LDAPTABPROCS"
  32.         exit 100
  33. fi
  34.  
  35. usage() {
  36.     pfmt -s nostd -g ldapmisc:12 "Usage: %s: ldapstop [all] [-i id]\n" "$1";
  37.     pfmt -s nostd -g ldapmisc:13 "Usage: %s: ldapstop [all] [-d number]\n" "$1";
  38. }
  39.  
  40. stopSlapd() {
  41.         typeset masterfile=$(getDaemonMasterFile "$1" )
  42.         typeset bname=$(echo $masterfile | sed -e's/\//_/g')
  43.         typeset FILE="/var/ldap/pids/$bname"
  44.  
  45.     if [ -f "$FILE" ]
  46.     then
  47.         typeset PID=$(cat $FILE)
  48.         if [ "$PID" != "STARTING" ]
  49.         then
  50.             kill -TERM $PID > /dev/null 2>&1
  51.             pfmt -s nostd -g ldapmisc:14 "Stopping slapd [%s]\n" $PID
  52.         fi
  53.     fi
  54.     # Now check if slurpd needs to be stopped
  55.     replicas=`$LDAPINFO -v replicas -i "$1"`
  56.     if [ $? == 0 ] && [ ! -z "$replicas" ]
  57.     then
  58.         typeset PIDFILE="/var/ldap/pids/slurpd/$bname"
  59.         if [ -f "$PIDFILE" ]
  60.         then
  61.             typeset PID=$(cat $PIDFILE)
  62.             if [ "$PID" != "STARTING" ]
  63.             then
  64.                 kill -TERM $PID > /dev/null 2>&1
  65.                 pfmt -s nostd -g ldapmisc:15 "Stopping slurpd [%s]\n" $PID
  66.             fi
  67.         fi
  68.     fi
  69. }
  70.  
  71. if [ $# -eq 0 ]
  72. then
  73.     usage $0
  74.     exit 186
  75. fi
  76.  
  77. allflag=
  78. iflag=
  79. dflag=
  80. while [ $# != 0 ]
  81. do
  82.         name=$1
  83.         case $name in
  84.         all)
  85.                 allflag=1;;
  86.         -\?)
  87.                 usage $0
  88.                 exit 0;;
  89.         -d)
  90.                 shift
  91.                 if [ $# -eq 0 ]; then argexpected $name; usage $0; exit 186; fi
  92.                 dflag=1
  93.                 dval=$1;;
  94.     -i)
  95.         shift
  96.                 if [ $# -eq 0 ]; then argexpected $name; usage $0; exit 181; fi
  97.                 iflag=1
  98.                 ival=$1;;
  99.         *)
  100.         pfmt -s error -g ldapmisc:11 "Unrecognised argument: %s\n" $name
  101.                 usage $0
  102.                 exit 186;;
  103.         esac
  104.         shift
  105. done
  106.  
  107. if [ ! -z "$allflag" ]
  108. then
  109.     dnum=$($LDAPINFO -v noofdaemons)
  110.     let i=1
  111.     canReadLDAPTAB
  112.     while [ $i -le $dnum ]
  113.     do
  114.         daemonNumberIsValid $i -e
  115.         ival=`commentFilter $LDAPTAB | printLine "$i" | \
  116.             awk -F ":" '{print $1; exit;}' `
  117.         daemonIdentifierIsValid "$ival" -e
  118.         stopSlapd "$ival"
  119.         let i=$i+1
  120.     done
  121.     exit 0
  122. fi
  123.  
  124. if [ -z "$iflag" ] && [ ! -z "$dflag" ]
  125. then
  126.     canReadLDAPTAB
  127.     daemonNumberIsValid "$dval" -e
  128.     ival=`commentFilter $LDAPTAB | printLine "$dval" | \
  129.         awk -F ":" '{print $1; exit;}' `
  130.     iflag=1
  131. fi
  132.  
  133. if [ ! -z "$iflag" ]
  134. then
  135.     daemonIdentifierIsValid "$ival" -e
  136.     stopSlapd "$ival"
  137. fi
  138.