67 lines
1.9 KiB
Plaintext
67 lines
1.9 KiB
Plaintext
#!/sbin/openrc-run
|
|
|
|
# This is a custom variable, and has the following default value if a
|
|
# specific config file is not defined by the user.
|
|
: ${NAGIOS_CONFIG:="@sysconfdir@/nagios.cfg"}
|
|
|
|
# These two facilitate the bindir variable substitution below.
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
|
|
# The rest are OpenRC variables.
|
|
extra_commands="checkconfig"
|
|
extra_started_commands="reload"
|
|
|
|
# We put "--daemon" in command_args and not command_args_background
|
|
# because the latter interacts weirdly with the config file argument.
|
|
command="@bindir@/nagios"
|
|
command_args="--daemon ${NAGIOS_CONFIG}"
|
|
pidfile="@lockfile@"
|
|
|
|
depend(){
|
|
# Most daemons don't really *need* the network; they're happy with
|
|
# the loopback interface. However, nagios might start generating
|
|
# "EVERYTHING IS DOWN" alerts if it starts before the real live
|
|
# network comes up.
|
|
need net
|
|
use logger
|
|
after mysql postgresql
|
|
}
|
|
|
|
reload(){
|
|
checkconfig || return $?
|
|
ebegin "Reloading configuration"
|
|
start-stop-daemon --signal HUP --pidfile "${pidfile}"
|
|
eend $?
|
|
}
|
|
|
|
checkconfig(){
|
|
ebegin "Verifying config files"
|
|
|
|
# Save the output in case verification fails and errors are printed.
|
|
OUTPUT=$( ${command} --verify-config "${NAGIOS_CONFIG}" )
|
|
|
|
# Save the exit code from the verification so that `echo` doesn't
|
|
# clobber it. Then, if verification failed, show its
|
|
# output. Otherwise, succeed quietly.
|
|
local exit_code=$?
|
|
[ $exit_code -ne 0 ] && echo "${OUTPUT}" >&2
|
|
eend $exit_code
|
|
}
|
|
|
|
start_pre() {
|
|
# Without this, the "start" action will appear to succeed even if
|
|
# the config file contains errors, and the daemon fails to start.
|
|
# Another approach would be to wait for the PID file to appear, but
|
|
# this is fast enough and feels cleaner.
|
|
checkconfig || return $?
|
|
}
|
|
|
|
stop_pre() {
|
|
# If this is a restart, check to make sure the user's config
|
|
# isn't busted before we stop the running daemon.
|
|
if [ "${RC_CMD}" = "restart" ] ; then
|
|
checkconfig || return $?
|
|
fi
|
|
}
|