--- /dev/null
+#! /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/sbin/nagios3
+NAME="nagios3"
+DESC="nagios3 monitoring daemon"
+NAGIOSCFG="/etc/nagios3/nagios.cfg"
+CGICFG="/etc/nagios3/cgi.cfg"
+NICENESS=5
+
+[ -x "$DAEMON" ] || exit 0
+[ -r /etc/default/nagios3 ] && . /etc/default/nagios3
+
+
+# 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/sbin/nagios3'"
+ 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/nagios3/nagios.pid'
+
+start () {
+ 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 nagios3`
+ 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
+}
+
+check () {
+ $DAEMON -v $NAGIOSCFG
+}
+
+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