Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/sh
- # Written by Miquel van Smoorenburg miquels@cistron.nl
- # Modified for Debian GNU/Linux
- # by Ian Murdock imurdock@gnu.ai.mit.edu.
- # Clamav version by Magnus Ekdahl magnus@debian.org
- # Nagios version by Sean Finney seanius@debian.org and probably others
- # nagios2 version by Marc Haber mh+debian-packages@zugschlus.de
- # nagios3 version by Alexander Wirt formorer@debian.org
- ### BEGIN INIT INFO
- # Provides: nagios3
- # Required-Start: $local_fs $remote_fs $syslog $named $network $time
- # Required-Stop: $local_fs $remote_fs $syslog $named $network
- # Should-Start:
- # Should-Stop:
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: nagios host/service/network monitoring and management system
- # Description: nagios is a monitoring and management system for hosts, services and networks.
- ### END INIT INFO
- set -e
- . /lib/lsb/init-functions
- DAEMON=/usr/local/nagios/bin/nagios
- NAME="nagios"
- DESC="nagios 3.99 monitoring daemon"
- NAGIOSCFG="/etc/nagios/nagios.cfg"
- CGICFG="/etc/nagios/cgi.cfg"
- NICENESS=5
- [ -x "$DAEMON" ] || exit 0
- [ -r /etc/default/nagios ] && . /etc/default/nagios
- # this is from madduck on IRC, 2006-07-06
- # There should be a better possibility to give daemon error messages
- # and/or to log things
- log()
- {
- case "$1" in
- [[:digit:]]*) success=$1; shift;;
- *) :;;
- esac
- log_action_begin_msg "$1"; shift
- log_action_end_msg ${success:-0} "$*"
- }
- check_started () {
- #nagios3-core can be installed without -cgi
- if [ -e $CGICFG ];
- then
- check_cmd=$(get_config nagios_check_command $CGICFG)
- if [ ! "$check_cmd" ]; then
- log 6 "unable to determine nagios_check_command from $CGICFG!"
- return 6
- fi
- else
- #use hardcoded default version
- check_cmd="/usr/lib/nagios/plugins/check_nagios /var/cache/nagios3/status.dat 5 '/usr/local/nagios/bin/nagios'"
- fi
- eval $check_cmd >/dev/null
- if [ -f "$THEPIDFILE" ]; then
- pid="$(cat $THEPIDFILE)"
- if [ "$pid" ] && kill -0 $pid >/dev/null 2>/dev/null; then
- return 0 # Is started
- fi
- fi
- return 1 # Isn't started
- }
- #
- # get_config()
- #
- # grab a config option from nagios.cfg (or possibly another nagios config
- # file if specified). everything after the '=' is echo'd out, making
- # this a nice generalized way to get requested settings.
- #
- get_config () {
- if [ "$2" ]; then
- set -- `grep ^$1 $2 | sed 's@=@ @'`
- else
- set -- `grep ^$1 $NAGIOSCFG | sed 's@=@ @'`
- fi
- shift
- echo $*
- }
- check_config () {
- if $DAEMON -v $NAGIOSCFG >/dev/null 2>&1 ; then
- # First get the user/group etc Nagios is running as
- nagios_user="$(get_config nagios_user)"
- nagios_group="$(get_config nagios_group)"
- log_file="$(get_config log_file)"
- log_dir="$(dirname $log_file)"
- return 0 # Config is ok
- else
- # config is not okay, so let's barf the error to the user
- $DAEMON -v $NAGIOSCFG
- fi
- }
- check_named_pipe () {
- nagiospipe="$(get_config command_file)"
- if [ -p "$nagiospipe" ]; then
- return 1 # a named pipe exists
- elif [ -e "$nagiospipe" ];then
- return 1
- else
- return 0 # no named pipe exists
- fi
- }
- if [ ! -f "$NAGIOSCFG" ]; then
- log_failure_msg "There is no configuration file for Nagios 3."
- exit 6
- fi
- THEPIDFILE=$(get_config "lock_file")
- [ -n "$THEPIDFILE" ] || THEPIDFILE='/var/run/nagios.pid'
- start () {
- if [ "$ENABLED" = "no" ]; then
- log_warning_msg "Not starting Nagios3 - set ENABLED to yes in /etc/default/nagios"
- exit 0
- fi
- DIRECTORY=$(dirname $THEPIDFILE)
- [ ! -d $DIRECTORY ] && mkdir -p $DIRECTORY
- chown nagios:nagios $DIRECTORY
- if ! check_started; then
- if ! check_named_pipe; then
- log_action_msg "named pipe exists - removing"
- rm -f $nagiospipe
- fi
- if check_config; then
- start_daemon -n $NICENESS -p $THEPIDFILE $DAEMON -d $NAGIOSCFG
- ret=$?
- else
- log_failure_msg "errors in config!"
- log_end_msg 1
- exit 1
- fi
- else
- log_warning_msg "already running!"
- fi
- return $ret
- }
- stop () {
- killproc -p $THEPIDFILE
- ret=$?
- if [ `pidof nagios3 | wc -l ` -gt 0 ]; then
- echo -n "Waiting for $NAME daemon to die.."
- cnt=0
- while [ `pidof nagios3 | wc -l ` -gt 0 ]; do
- cnt=`expr "$cnt" + 1`
- if [ "$cnt" -gt 15 ]; then
- kill -9 `pidof nagios`
- break
- fi
- sleep 1
- echo -n "."
- done
- fi
- echo
- if ! check_named_pipe; then
- rm -f $nagiospipe
- fi
- if [ -n "$ret" ]; then
- return $ret
- else
- return $?
- fi
- }
- status()
- {
- log_action_begin_msg "checking $DAEMON"
- if check_started; then
- log_action_end_msg 0 "running"
- else
- if [ -e "$THEPIDFILE" ]; then
- log_action_end_msg 1 "$DAEMON failed"
- exit 1
- else
- log_action_end_msg 1 "not running"
- exit 3
- fi
- fi
- }
- reload () {
- # Check first
- if check_config; then
- if check_started; then
- killproc -p $THEPIDFILE $DAEMON 1
- else
- log_warning_msg "Not running."
- fi
- else
- log_failure_msg "errors in config!"
- log_end_msg 6
- exit 6
- fi
- }
- case "$1" in
- start)
- log_daemon_msg "Starting $DESC" "$NAME"
- start
- log_end_msg $?
- ;;
- stop)
- log_daemon_msg "Stopping $DESC" "$NAME"
- stop
- log_end_msg $?
- ;;
- restart)
- log_daemon_msg "Restarting $DESC" "$NAME"
- stop
- if [ -z "$?" -o "$?" = "0" ]; then
- start
- fi
- log_end_msg $?
- ;;
- reload|force-reload)
- log_daemon_msg "Reloading $DESC configuration files" "$NAME"
- reload
- log_end_msg $?
- ;;
- status)
- status
- ;;
- check)
- check
- ;;
- *)
- log_failure_msg "Usage: $0 {start|stop|restart|reload|force-reload|status}" >&2
- exit 1
- ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement