#!/bin/sh # # Copyright (C) 2008 Red Hat # see file 'COPYING' for use and warranty information # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; version 2 only # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # IPA control to start/stop the various services required for IPA in the # proper order # # Set IFS so we can do space-embedded lists of services IFS=";" # start and stop are basically a reverse of each other services_stop="ipa_kpasswd;httpd;krb5kdc;dirsrv;ntpd;named;pki-cad pki-ca" services_start="dirsrv;ntpd;krb5kdc;named;ipa_kpasswd;httpd;pki-cad pki-ca" function is_running() { # $1 = service to check on # $2 = optional instance to check on, for dirsrv and pki-cad # Returns # 0 - running # 1 - pid but dead service # 2 - dead but locked subsys # 3 - stopped # 4 - no such service if [ "$#" = 2 ] ; then /sbin/service $1 status $2 > /dev/null 2>&1 else out=`/sbin/service $1 status 2>&1` fi case "$?" in 0) return 0;; 1) x=`echo $out | grep -c exists` if [ $x -eq 1 ] ; then return 1 else return 4 fi ;; 2) return 2;; 3) return 3;; esac } function start() { for service in $services_start ; do is_running $service case "$?" in 0) # running ;; 4) # no such service ;; *) # otherwise not running /sbin/service $service start ;; esac done } function stop() { for service in $services_stop ; do is_running $service case "$?" in 0) # running /sbin/service $service stop ;; *) # otherwise not running or doesn't exist ;; esac done } function status() { for service in $services_start ; do is_running $service case "$?" in 4) ;; *) /sbin/service $service status ;; esac done } case "$1" in restart) stop start ;; start) start ;; stop) stop ;; status) status ;; *) echo "Usage: ipactl {start|stop|restart|status}" exit 1 ;; esac