summaryrefslogtreecommitdiffstats
path: root/install/tools/ipactl
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-08-31 17:28:41 -0400
committerRob Crittenden <rcritten@redhat.com>2010-09-07 15:39:18 -0400
commit54b3842abac529e550b9a3d94bf240a95d8a6ba5 (patch)
tree0db30ad9346356b12b585d3e28779c996df3a8b2 /install/tools/ipactl
parent6049a258485d13e5b232ba2dbb9ed05162809240 (diff)
downloadfreeipa-54b3842abac529e550b9a3d94bf240a95d8a6ba5.tar.gz
freeipa-54b3842abac529e550b9a3d94bf240a95d8a6ba5.tar.xz
freeipa-54b3842abac529e550b9a3d94bf240a95d8a6ba5.zip
Make ipactl a lot smarter and have it manage named as well.
ticket 138
Diffstat (limited to 'install/tools/ipactl')
-rwxr-xr-xinstall/tools/ipactl97
1 files changed, 71 insertions, 26 deletions
diff --git a/install/tools/ipactl b/install/tools/ipactl
index e7544cfda..fa8651167 100755
--- a/install/tools/ipactl
+++ b/install/tools/ipactl
@@ -21,40 +21,85 @@
# proper order
#
-function start() {
- /sbin/service dirsrv start
- /sbin/service ntpd start
- /sbin/service krb5kdc start
- /sbin/service ipa_kpasswd start
- /sbin/service httpd start
+# 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;named;krb5kdc;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
- if [ -e /var/lib/pki-ca ]; then
- /sbin/service pki-cad start
+ # 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 stop() {
- /sbin/service ipa_kpasswd stop
- /sbin/service httpd stop
- /sbin/service krb5kdc stop
- /sbin/service dirsrv stop
- /sbin/service ntpd stop
+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
+}
- if [ -e /var/lib/pki-ca ]; then
- /sbin/service pki-cad stop
- fi
+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() {
- /sbin/service ipa_kpasswd status
- /sbin/service httpd status
- /sbin/service krb5kdc status
- /sbin/service dirsrv status
- /sbin/service ntpd status
-
- if [ -e /var/lib/pki-ca ]; then
- /sbin/service pki-cad status
- fi
+ for service in $services_start ; do
+ is_running $service
+ case "$?" in
+ 4)
+ ;;
+ *)
+ /sbin/service $service status
+ ;;
+ esac
+ done
}
case "$1" in