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

  1. #!/usr/bin/ksh
  2. #==============================================================================
  3. # ldapstart
  4. # ~~~~~~~~~
  5. #
  6. # synopsis:
  7. #    ldapstart all
  8. #    ldapstart -d n
  9. #    ldapstart boot
  10. #
  11. # EXIT STATES:
  12. #    
  13. #     100    - Cannot include ldaptabProcedures
  14. #    180    - Must be root to execute this command
  15. #    181    - Invalid arguments to ldapstart
  16. #------------------------------------------------------------------------------
  17. LDAPTABPROCS=/usr/lib/ldap/ldaptabProcedures
  18. PIDDIR=/var/ldap/pid
  19. LDAPINFO=/usr/lib/ldap/ldapinfo
  20. SLAPD=/usr/lib/ldap/slapd
  21. SLURPD=/usr/lib/ldap/slurpd
  22.  
  23. exitVal=0
  24.  
  25. #Check permissions to run this command
  26. UID=`id -u`
  27. if [ "$UID" != 0 ]
  28. then
  29.     pfmt  -s info -g ldapmisc:2 "You must be root to run this command\n"
  30.     exit 180
  31. fi
  32.  
  33. if [ -f $LDAPTABPROCS ]
  34. then    
  35.         . $LDAPTABPROCS
  36. else    
  37.         pfmt -s halt -g ldapmisc:3 "Fatal error, cannot find file %s\n" "$LDAPTABPROCS"
  38.         exit 100
  39. fi
  40.  
  41. usage() {
  42.         pfmt -s nostd -g ldapmisc:4 "Usage: %s: ldapstart all\n" "$0";
  43.         pfmt -s nostd -g ldapmisc:5 "Usage: %s: ldapstart -d number\n" "$0";
  44.         pfmt -s nostd -g ldapmisc:6 "Usage: %s: ldapstart -i id\n" "$0";
  45.         pfmt -s nostd -g ldapmisc:7 "Usage: %s: ldapstart boot\n" "$0";
  46. }
  47.  
  48. startSlapd() {
  49.         masterfile=`$LDAPINFO -v masterfile -i "$1"`
  50.                 port=`$LDAPINFO -v port -i "$1"`
  51.                 sysloglevel=`$LDAPINFO -v sysloglevel -i "$1"`
  52.  
  53.  
  54.                 SLAPDARGS="$SLAPD"
  55.                 SLURPDARGS="$SLURPD"
  56.                 [ ! -z "$masterfile" ] && {
  57.                         SLAPDARGS=$SLAPDARGS" -f $masterfile"
  58.                         SLURPDARGS=$SLURPDARGS" -f $masterfile"
  59.         }
  60.                 [ ! -z "$port" ] && \
  61.                         SLAPDARGS=$SLAPDARGS" -p $port"
  62.                 [ ! -z "$sysloglevel" ] && \
  63.                         SLAPDARGS=$SLAPDARGS" -s $sysloglevel"
  64.  
  65.         if [ -z "$port" ]
  66.         then
  67.             port=389
  68.         fi
  69.         if [ -z "$quietflag" ]
  70.         then
  71.             pfmt -s nostd -g ldapmisc:8 "Starting slapd on port %s\n" $port
  72.         fi
  73.         eval "$SLAPDARGS"
  74.         if [ $? != 0 ]
  75.         then
  76.             return 1
  77.         fi
  78.         sleep 1
  79.  
  80.         # Now check if slurpd needs to be started
  81.         replicas=`$LDAPINFO -v replicas -i "$1"`
  82.         if [ $? == 0 ] && [ ! -z "$replicas" ]
  83.         then
  84.             if [ -z "$quietflag" ]
  85.             then
  86.                 pfmt -s nostd -g ldapmisc:9 "Starting slurpd\n"
  87.             fi
  88.             eval "$SLURPDARGS"
  89.             if [ $? != 0 ]
  90.             then
  91.                 return 1
  92.             fi
  93.         fi
  94. }
  95.  
  96. if [ $# -eq 0 ]
  97. then
  98.         usage $0
  99.     exit 181
  100. fi
  101.  
  102. allflag=
  103. dflag=
  104. iflag=
  105. bootflag=
  106. quietflag=
  107. while [ $# != 0 ]
  108. do
  109.         name=$1
  110.     case $name in
  111.     all)
  112.         allflag=1;;
  113.     boot)
  114.         bootflag=1;;
  115.     -\?)
  116.         usage $0
  117.         exit 0;;
  118.     -d)
  119.         shift
  120.                 if [ $# -eq 0 ]; then argexpected $name; usage $0; exit 181; fi
  121.                 dflag=1
  122.                 dval=$1;;
  123.     -i)
  124.         shift
  125.                 if [ $# -eq 0 ]; then argexpected $name; usage $0; exit 181; fi
  126.                 iflag=1
  127.                 ival=$1;;
  128.     -q)
  129.         quietflag=1;;
  130.     *)
  131.         pfmt -s error -g ldapmisc:11 "Unrecognised argument: %s\n" $name
  132.         usage $0
  133.         exit 181;;
  134.     esac
  135.     shift
  136. done
  137.  
  138. if [ ! -z "$bootflag" ]
  139. then
  140.     dnum=`$LDAPINFO -v noofdaemons`
  141.         if [ "$dnum" -gt 0 ]
  142.         then
  143.         let i=1
  144.         let bootcount=0
  145.         canReadLDAPTAB
  146.                 while [ $i -le $dnum ]
  147.                 do
  148.             daemonNumberIsValid $i -e
  149.             ival=`commentFilter $LDAPTAB | printLine "$i" | \
  150.                 awk -F ":" '{print $1; exit;}' `
  151.             daemonIdentifierIsValid "$ival" -e
  152.             if [ `$LDAPINFO -v startatboot -i "$ival"` = "on" ]
  153.             then
  154.                 let bootcount=$bootcount+1
  155.                             startSlapd "$ival"
  156.                 if [ $? != 0 ]
  157.                 then
  158.                     exitVal=1
  159.                 fi
  160.             fi
  161.                         let i=$i+1
  162.                 done
  163.         fi
  164.         exit $exitVal
  165. fi
  166.  
  167.  
  168. if [ ! -z "$allflag" ] 
  169. then
  170.     dnum=`$LDAPINFO -v noofdaemons`
  171.     if [ "$dnum" -gt 0 ] 
  172.     then
  173.         if [ -z "$quietflag" ]
  174.         then
  175.             pfmt -s nostd -g ldapmisc:10 "Starting all slapd processes\n"
  176.         fi
  177.         canReadLDAPTAB
  178.         let i=1
  179.         while [ $i -le $dnum ]
  180.         do
  181.             daemonNumberIsValid $i -e
  182.             ival=`commentFilter "$LDAPTAB" | printLine "$i" | \
  183.                 awk -F ":" '{print $1; exit;}' ` 
  184.             daemonIdentifierIsValid "$ival" -e
  185.             startSlapd "$ival"
  186.             if [ $? != 0 ]
  187.             then
  188.                 exitVal=1
  189.             fi
  190.             let i=$i+1
  191.         done
  192.     fi
  193.     exit $exitVal
  194. fi
  195.  
  196. if [ -z "$iflag" ] && [ ! -z "$dflag" ]
  197. then
  198.     canReadLDAPTAB
  199.     daemonNumberIsValid $dval -e
  200.     ival=`commentFilter $LDAPTAB | printLine "$dval" | \
  201.         awk -F ":" '{print $1; exit;}' `
  202.     iflag=1
  203. fi
  204.  
  205. # start 
  206. if [ ! -z "$iflag" ]
  207. then
  208.     daemonIdentifierIsValid "$ival" -e
  209.     startSlapd "$ival"
  210.     return $?
  211. fi
  212.