#!/bin/sh # Description: Starts and stops the Nagios monitor # used to provide network services status. # status_nagios () { if test ! -f $NagiosLockFile; then echo "No lock file found in $NagiosLockDir" return 1 fi #NagiosPID=`head -n 1 $NagiosRunFile` if test -x $NagiosCGI/daemonchk.cgi; then if $NagiosCGI/daemonchk.cgi -l $NagiosRunFile; then return 0 else return 1 fi else if ps -p $NagiosPID; then return 0 else return 1 fi fi return 1 } killproc_nagios () { if test ! -f $NagiosRunFile; then echo "No lock file found in $NagiosRunFile" return 1 fi #NagiosPID=`head -n 1 $NagiosRunFile` kill $2 $NagiosPID } # Source function library # Solaris doesn't have an rc.d directory, so do a test first if [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions elif [ -f /etc/init.d/functions ]; then . /etc/init.d/functions fi prefix=/usr/local/nagios exec_prefix=${prefix} NagiosBin=${exec_prefix}/bin/nagios NagiosCfgFile=/etc/nagios/nagios.cfg NagiosStatusFile=${prefix}/var/status.dat NagiosTempFile=${prefix}/var/nagios.tmp NagiosRetentionFile=${prefix}/var/retention.dat NagiosCommandFile=${prefix}/var/rw/nagios.cmd NagiosVarDir=${prefix}/var NagiosRunFile=${prefix}/var/nagios.lock NagiosLockDir=/usr/local/nagios/var/lock/ NagiosLockFile=${NagiosLockDir}/nagios.lock NagiosCGIDir=${exec_prefix}/sbin NagiosUser=nagios NagiosGroup=nagios NagiosPID=`grep pid /var/nagios/nagios.status | sed s/nagios_pid=// | sed 's/^[ \t]*//'` #echo $NagiosPID; # Check that nagios exists. if [ ! -f $NagiosBin ]; then echo "Executable file $NagiosBin not found. Exiting." exit 1 fi # Check that nagios.cfg exists. if [ ! -f $NagiosCfgFile ]; then echo "Configuration file $NagiosCfgFile not found. Exiting." exit 1 fi # See how we were called. case "$1" in start) echo "Starting network monitor: nagios" $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1; if [ $? -eq 0 ]; then su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile" rm -f $NagiosCommandFile touch $NagiosRunFile chown $NagiosUser:$NagiosGroup $NagiosRunFile $NagiosBin -d $NagiosCfgFile if [ -d $NagiosLockDir ]; then touch $NagiosLockFile; fi #sleep 1 #status_nagios nagios exit 0 else echo "CONFIG ERROR! Start aborted. Check your Nagios configuration." exit 1 fi ;; stop) echo "Stopping network monitor: nagios" killproc_nagios nagios #rm -f $NagiosStatusFile $NagiosTempFile $NagiosRunFile $NagiosLockDir/$NagiosLockFile $NagiosCommandFile ;; status) status_nagios nagios ;; restart) printf "Running configuration check..." $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1; if [ $? -eq 0 ]; then echo "done" $0 stop $0 start else #$NagiosBin -v $NagiosCfgFile echo " FAILED! Restart aborted. Check your Nagios configuration." exit 1 fi ;; reload|force-reload) printf "Running configuration check..." $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1; if [ $? -eq 0 ]; then echo "done" if test ! -f $NagiosRunFile; then $0 start else #NagiosPID=`head -n 1 $NagiosRunFile` if status_nagios > /dev/null; then printf "Reloading nagios configuration..." killproc_nagios nagios -HUP echo "done" else $0 stop $0 start fi fi else #$NagiosBin -v $NagiosCfgFile echo " FAILED! Reload aborted. Check your Nagios configuration." exit 1 fi ;; *) echo "Usage: nagios {start|stop|restart|reload|force-reload|status}" exit 1 ;; esac # End of this script