wok-next annotate ndoutils/stuff/etc/init.d/ndo2db @ rev 8703

add:: ndoutils
author Eric Joseph-Alexandre <erjo@slitaz.org>
date Thu Feb 17 23:12:37 2011 +0100 (2011-02-17)
parents
children 0d8a1a3edc72
rev   line source
erjo@8703 1 #!/bin/sh
erjo@8703 2 #
erjo@8703 3 #
erjo@8703 4 # chkconfig: 345 99 01
erjo@8703 5 # description: Nagios to mysql
erjo@8703 6 #
erjo@8703 7 # Author : Gaétan Lucas
erjo@8703 8 # Realase : 07/02/08
erjo@8703 9 # Version : 0.1 b
erjo@8703 10 # File : ndo2db
erjo@8703 11 # Description: Starts and stops the Ndo2db daemon
erjo@8703 12 # used to provide network services status in a database.
erjo@8703 13 #
erjo@8703 14
erjo@8703 15 status_ndo ()
erjo@8703 16 {
erjo@8703 17 if ps -p $NdoPID > /dev/null 2>&1; then
erjo@8703 18 return 0
erjo@8703 19 else
erjo@8703 20 return 1
erjo@8703 21 fi
erjo@8703 22
erjo@8703 23 return 1
erjo@8703 24 }
erjo@8703 25
erjo@8703 26 printstatus_ndo()
erjo@8703 27 {
erjo@8703 28 if status_ndo $1 $2; then
erjo@8703 29 echo "ndo (pid $NdoPID) is running..."
erjo@8703 30 else
erjo@8703 31 echo "ndo is not running"
erjo@8703 32 fi
erjo@8703 33 }
erjo@8703 34
erjo@8703 35 killproc_ndo ()
erjo@8703 36 {
erjo@8703 37 echo "kill $2 $NdoPID"
erjo@8703 38 kill $2 $NdoPID
erjo@8703 39 }
erjo@8703 40
erjo@8703 41 pid_ndo ()
erjo@8703 42 {
erjo@8703 43 if test ! -f $NdoRunFile; then
erjo@8703 44 echo "No lock file found in $NdoRunFile"
erjo@8703 45 echo -n " checking runing process..."
erjo@8703 46 NdoPID=`ps -ef|grep ndo2db|cut -c0-5`
erjo@8703 47 if [ -z "$NdoPID" ]; then
erjo@8703 48 echo " No ndo2db process found"
erjo@8703 49 exit 1
erjo@8703 50 else
erjo@8703 51 echo " found process pid: $NdoPID"
erjo@8703 52 echo -n " reinit $NdoRunFile ..."
erjo@8703 53 touch $NdoRunFile
erjo@8703 54 chown $NdoUser:$NdoGroup $NdoRunFile
erjo@8703 55 echo "$NdoPID" > $NdoRunFile
erjo@8703 56 echo " done"
erjo@8703 57 fi
erjo@8703 58 fi
erjo@8703 59
erjo@8703 60 NdoPID=`head $NdoRunFile`
erjo@8703 61 }
erjo@8703 62
erjo@8703 63 # Source function library
erjo@8703 64 # Solaris doesn't have an rc.d directory, so do a test first
erjo@8703 65 if [ -f /etc/rc.d/init.d/functions ]; then
erjo@8703 66 . /etc/rc.d/init.d/functions
erjo@8703 67 elif [ -f /etc/init.d/functions ]; then
erjo@8703 68 . /etc/init.d/functions
erjo@8703 69 fi
erjo@8703 70
erjo@8703 71 prefix=/usr
erjo@8703 72 exec_prefix=${prefix}/bin
erjo@8703 73 NdoBin=${exec_prefix}/ndo2db
erjo@8703 74 NdoCfgFile=/etc/nagios/ndo2db.cfg
erjo@8703 75 NdoRunFile=/var/run/nagios/ndo2db.run
erjo@8703 76 NdoLockDir=/var/lock/subsys
erjo@8703 77 NdoLockFile=ndo2db.lock
erjo@8703 78 NdoUser=nagios
erjo@8703 79 NdoGroup=nagios
erjo@8703 80
erjo@8703 81 # Check that ndo exists.
erjo@8703 82 if [ ! -f $NdoBin ]; then
erjo@8703 83 echo "Executable file $NdoBin not found. Exiting."
erjo@8703 84 exit 1
erjo@8703 85 fi
erjo@8703 86
erjo@8703 87 # Check that ndo.cfg exists.
erjo@8703 88 if [ ! -f $NdoCfgFile ]; then
erjo@8703 89 echo "Configuration file $NdoCfgFile not found. Exiting."
erjo@8703 90 exit 1
erjo@8703 91 fi
erjo@8703 92
erjo@8703 93 # See how we were called.
erjo@8703 94 case "$1" in
erjo@8703 95
erjo@8703 96 start)
erjo@8703 97 echo -n "Starting ndo:"
erjo@8703 98 touch $NdoRunFile
erjo@8703 99 chown $NdoUser:$NdoGroup $NdoRunFile
erjo@8703 100 $NdoBin -c $NdoCfgFile
erjo@8703 101 if [ -d $NdoLockDir ]; then
erjo@8703 102 touch $NdoLockDir/$NdoLockFile;
erjo@8703 103 fi
erjo@8703 104 ps -ef|grep ndo2db|cut -c0-5 > $NdoRunFile
erjo@8703 105 if [ $? -eq 0 ]; then
erjo@8703 106 echo " done."
erjo@8703 107 exit 0
erjo@8703 108 else
erjo@8703 109 echo " failed."
erjo@8703 110 $0 stop
erjo@8703 111 exit 1
erjo@8703 112 fi
erjo@8703 113 ;;
erjo@8703 114
erjo@8703 115 stop)
erjo@8703 116 echo -n "Stopping ndo: "
erjo@8703 117
erjo@8703 118 pid_ndo
erjo@8703 119 killproc_ndo
erjo@8703 120
erjo@8703 121 # now we have to wait for ndo to exit and remove its
erjo@8703 122 # own NdoRunFile, otherwise a following "start" could
erjo@8703 123 # happen, and then the exiting ndo will remove the
erjo@8703 124 # new NdoRunFile, allowing multiple ndo daemons
erjo@8703 125 # to (sooner or later) run
erjo@8703 126 #echo -n 'Waiting for ndo to exit .'
erjo@8703 127 for i in 1 2 3 4 5 6 7 8 9 10 ; do
erjo@8703 128 if status_ndo > /dev/null; then
erjo@8703 129 echo -n '.'
erjo@8703 130 sleep 1
erjo@8703 131 else
erjo@8703 132 break
erjo@8703 133 fi
erjo@8703 134 done
erjo@8703 135 if status_ndo > /dev/null; then
erjo@8703 136 echo
erjo@8703 137 echo 'Warning - ndo did not exit in a timely manner'
erjo@8703 138 else
erjo@8703 139 echo 'done.'
erjo@8703 140 fi
erjo@8703 141
erjo@8703 142 rm -f $NdoRunFile $NdoLockDir/$NdoLockFile
erjo@8703 143 ;;
erjo@8703 144
erjo@8703 145 status)
erjo@8703 146 pid_ndo
erjo@8703 147 printstatus_ndo ndo
erjo@8703 148 ;;
erjo@8703 149
erjo@8703 150 restart)
erjo@8703 151 $0 stop
erjo@8703 152 $0 start
erjo@8703 153 ;;
erjo@8703 154
erjo@8703 155 *)
erjo@8703 156 echo "Usage: ndo {start|stop|restart|status}"
erjo@8703 157 exit 1
erjo@8703 158 ;;
erjo@8703 159
erjo@8703 160 esac
erjo@8703 161
erjo@8703 162 # End of this script
erjo@8703 163