#!/bin/bash # # Based on the original distribution script modified for Slackware # # 08-Nov-2012 Michiel Broek prefix=/usr/share/nagios exec_prefix=${prefix} NagiosBin=/usr/bin/nagios NagiosCfgFile=/etc/nagios/nagios.cfg NagiosStatusFile=/var/nagios/status.dat NagiosRetentionFile=/var/nagios/retention.dat NagiosCommandFile=/var/nagios/rw/nagios.cmd NagiosVarDir=/var/nagios NagiosRunFile=/var/nagios/nagios.lock NagiosLockDir=/var/lock/subsys NagiosLockFile=nagios NagiosCGIDir=${exec_prefix}/sbin NagiosUser=nagios NagiosGroup=nagios NagiosStopTime=180 status_nagios() { if ps -p $NagiosPID > /dev/null 2>&1; then return 0 else return 1 fi return 1 } pid_nagios() { if test ! -f $NagiosRunFile; then echo "No lock file found in $NagiosRunFile" exit 1 fi NagiosPID=`head -n 1 $NagiosRunFile` } case "$1" in start) echo -n "Starting Nagios " $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1; if [ $? -eq 0 ]; then touch $NagiosVarDir/nagios.log $NagiosRetentionFile chown $NagiosUser:$NagiosGroup $NagiosVarDir/nagios.log $NagiosRetentionFile rm -f $NagiosCommandFile touch $NagiosRunFile chown $NagiosUser:$NagiosGroup $NagiosRunFile $NagiosBin -d $NagiosCfgFile if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi echo "done." else echo "CONFIG ERROR! Check your Nagios configuration." fi ;; stop) echo -n "Stopping Nagios " pid_nagios kill $NagiosPID # now we have to wait for nagios to exit and remove its # own NagiosRunFile, otherwise a following "start" could # happen, and then the exiting nagios will remove the # new NagiosRunFile, allowing multiple nagios daemons # to (sooner or later) run - John Sellens i=0 while [ $i -lt $NagiosStopTime ]; do if status_nagios > /dev/null; then echo -n "." sleep 1 i=$(($i+1)) else break fi done if status_nagios > /dev/null; then echo " Warning - nagios did not exit in a timely manner" kill -9 $NagiosPID else echo " done" fi rm -f $NagiosStatusFile $NagiosRunFile $NagiosLockDir/$NagiosLockFile $NagiosCommandFile ;; restart) $0 stop sleep 1 $0 start ;; reload|force-reload) echo -n "Nagios reload " $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1; if [ $? -eq 0 ]; then pid_nagios if status_nagios > /dev/null; then kill -HUP $NagiosPID echo "done." else echo "failed." fi fi ;; status) pid_nagios if status_nagios > /dev/null; then echo "nagios (pid $NagiosPID) is running..." else echo "nagios is not running" fi ;; *) echo "usage: $0 {start|stop|restart|reload|force-reload|status}" esac