Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
nagios.12281
rcnagios
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File rcnagios of Package nagios.12281
#! /bin/sh # Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany. # 2002 SuSE Linux AG Nuernberg, Germany. # 2007 SuSE Linux GmbH Nuernberg, Germany. # 2010-2012 SUSE LINUX Products GmbH, Nuernberg, Germany # # Author: Wolfgang Rosenauer, Lars Vogdt # # # /etc/init.d/nagios # # and symbolic its link # # /usr/sbin/rcnagios # # System startup script for nagios # ### BEGIN INIT INFO # Provides: nagios monitoring_daemon # Required-Start: $local_fs $remote_fs $syslog $network # Required-Stop: $local_fs $remote_fs $syslog $network # Should-Start: $time sendmail httpd2 xntpd $named cron ndo2db # Should-Stop: sendmail ndo2db # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: Network monitor Nagios # Description: Starts and stops the Nagios monitor # used to provide network services status for hosts, # services and networks. ### END INIT INFO . /etc/rc.status NAGIOS_BIN='/usr/sbin/nagios' NAGIOS_CFG='/etc/nagios/nagios.cfg' NAGIOS_PIDFILE='/var/run/nagios/nagios.pid' NAGIOS_SYSCONFIG='/etc/sysconfig/nagios' NAGIOS_CFG_ERR_LOG='/var/log/nagios/config.err' NAGIOS_DAEMONCHK='/usr/lib/nagios/cgi/daemonchk.cgi' # Read config and log errors in logfile config_check () { case "$1" in verbose) $NAGIOS_BIN -v "$NAGIOS_CFG" >"$NAGIOS_CFG_ERR_LOG" 2>&1 if [ $? -eq 0 ]; then return 0 else return 1 fi ;; *) $NAGIOS_BIN -v "$NAGIOS_CFG" >/dev/null 2>&1 if [ $? -eq 0 ]; then return 0 else $NAGIOS_BIN -v "$NAGIOS_CFG" >"$NAGIOS_CFG_ERR_LOG" 2>&1 return 1 fi ;; esac } # grab a config option get_var() { if [ -n "$2" ]; then set -- `grep ^$1 $2 | sed 's@=@ @' | tr -d '[:cntrl:]'` else set -- `grep ^$1 "$NAGIOS_CFG" | sed 's@=@ @' | tr -d '[:cntrl:]'` fi shift # remove first ARG => search-string echo $* } # check some default files and directories check_files() { # remove some perhaps left over files for file in "$command_file" "$lock_file" "$status_file" "$temp_file" "/var/lock/subsys/nagios"; do test -f "$file" && rm -f "$file" done # set default access rights for files and directories for file in "$log_file" "$state_retention_file" "$status_file"; do if [ ! -e "$file" ]; then touch "$file" fi chown --no-dereference $nagios_user:$nagios_cmdgrp "$file" done for dir in "$check_result_path" $(dirname $status_file); do if [ ! -d "$dir" ]; then mkdir -p "$dir" fi chown --no-dereference $nagios_user:$nagios_cmdgrp "$dir" done chmod 660 "$resource_file" chown --no-dereference $nagios_user:$nagios_cmdgrp "$resource_file" } check_lock_file() { PIDDIR=$(dirname $lock_file) case "$PIDDIR" in /var/run) if [ x"$nagios_user" != x"root" ]; then DATESTRING=`date +"%Y%m%d"` mv -f "$NAGIOS_CFG" "$NAGIOS_CFG-$DATESTRING" sed -e "s|^lock_file.*|pid_file=$NAGIOS_PIDFILE|g" "$NAGIOS_CFG-$DATESTRING" > "$NAGIOS_CFG" /bin/logger -t rcnagios "Configured $lock_file in $NAGIOS_CFG moved to $NAGIOS_PIDFILE. Backup is $NAGIOS_CFG-$DATESTRING" test -f "$lock_file" && rm -f "$lock_file" install -d -m755 -o$nagios_user -g$nagios_cmdgrp $(dirname "$NAGIOS_PIDFILE") else test -d "$PIDDIR" || mkdir -p "$PIDDIR" fi ;; *) install -d -m755 -o$nagios_user -g$nagios_cmdgrp $(dirname "$NAGIOS_PIDFILE") esac } # Check for missing binaries (stale symlinks should not happen) # Note: Special treatment of stop for LSB conformance test -x "$NAGIOS_BIN" || { echo "$NAGIOS_BIN not installed or not executable."; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } # Check for existence of needed config file test -r "$NAGIOS_CFG" || { echo "$NAGIOS_CFG not existing or readable."; if [ "$1" = "stop" ]; then exit 0; else exit 6; fi; } # Check for existence of sysconfig file and read it test -r "$NAGIOS_SYSCONFIG" || { echo "$NAGIOS_SYSCONFIG not existing or readable."; if [ "$1" = "stop" ]; then exit 0; else exit 6; fi; } . "$NAGIOS_SYSCONFIG" # set values for sysconfig vars if [ -n "$NAGIOS_NICELEVEL" ]; then NICELEVEL="-n $NAGIOS_NICELEVEL" else NICELEVEL="-n 0" fi if [ -z "$NAGIOS_TIMEOUT" ]; then NAGIOS_TIMEOUT=10 fi # # get variables from config file # nagios_user="$(get_var nagios_user)" lock_file="$(get_var lock_file)" status_file="$(get_var status_file)" log_file="$(get_var log_file)" temp_file="$(get_var temp_file)" state_retention_file="$(get_var state_retention_file)" command_file="$(get_var command_file)" resource_file="$(get_var resource_file)" object_cache_file="$(get_var object_cache_file)" check_result_path="$(get_var check_result_path)" check_external_commands="$(get_var check_external_commands)" # # use default values if above check doesn't work # : ${nagios_user:=nagios} : ${nagios_cmdgrp:=nagcmd} : ${resource_file:=/etc/nagios/resource.cfg} # check ownership files : ${check_result_path:=/var/spool/nagios} : ${log_file:=/var/log/nagios/nagios.log} : ${state_retention_file:=/var/log/nagios/retention.dat} : ${status_file:=/var/log/nagios/status.dat} : ${check_external_commands:=0} # files to remove : ${command_file:=/var/spool/nagios/nagios.cmd} : ${lock_file:=/var/run/nagios/nagios.pid} : ${object_cache_file:=/var/lib/nagios/objects.cache} : ${temp_file:=/var/log/nagios/nagios.tmp} # Reset status of this service rc_reset case "$1" in start) echo -n "Starting Nagios " config_check if [ $? -eq 0 ]; then # check if nagios is already running NAGPID=$(pidof "$NAGIOS_BIN") if [ -n "$NAGPID" ]; then echo "- Error: looks like Nagios is still running with PID $NAGPID" echo -n "- trying to kill previous Nagios process" kill -9 $NAGPID sleep 2 fi check_files check_lock_file startproc $NICELEVEL -p "$lock_file" "$NAGIOS_BIN" -d "$NAGIOS_CFG" if [ "$check_external_commands" != 0 ]; then while [ ! -e "$command_file" ] && [ $NAGIOS_TIMEOUT -gt 0 ]; do sleep 1 NAGIOS_TIMEOUT=$(($NAGIOS_TIMEOUT-1)) done chgrp --no-dereference $nagios_cmdgrp "$command_file" chown --no-dereference $nagios_user:$nagios_cmdgrp "$check_result_path" fi else echo "Error in configuration - please read $NAGIOS_CFG_ERR_LOG" rc_failed fi rc_status -v ;; stop) echo -n "Shutting down Nagios " # we have to wait for nagios to exit and remove its # own Lockfile, otherwise a following "start" could # happen, and then the exiting nagios will remove the # new Lockfile, allowing multiple nagios daemons # to (sooner or later) run - John Sellens if checkproc "$NAGIOS_BIN" ; then killproc -p "$lock_file" -TERM "$NAGIOS_BIN" sleep 1 if [ -e "$lock_file" ]; then echo "Warning - Nagios did not exit in a timely manner. Waiting..." while [ -e "$lock_file" ] && [ $NAGIOS_TIMEOUT -gt 0 ] ; do sleep 1 NAGIOS_TIMEOUT=$(($NAGIOS_TIMEOUT-1)) echo -n '.' [ $NAGIOS_TIMEOUT -eq 41 ] && echo done fi if checkproc "$NAGIOS_BIN" ; then killproc -p "$lock_file" -SIGKILL "$NAGIOS_BIN" echo -n "Warning: Nagios killed" fi else echo -n "Nagios not running" rc_failed 7 fi check_files rc_reset rc_status -v ;; try-restart) ## Do a restart only if the service was active before. $0 status if test $? = 0; then $0 restart else rc_reset # Not running is not a failure. fi rc_status ;; restart) $0 check $0 stop $0 start rc_status ;; reload|force-reload) echo -n "Reload service Nagios " config_check if [ $? -eq 0 ]; then echo -n "Passed configuration check - reloading..." killproc -HUP -p "$lock_file" "$NAGIOS_BIN" else echo "- Error in configuration files" echo -n "- aborting reload - please read $NAGIOS_CFG_ERR_LOG" rc_failed fi rc_status -v ;; status) echo -n "Checking for Nagios: " if [ -x "$NAGIOS_DAEMONCHK" ]; then if "$NAGIOS_DAEMONCHK" -l "$lock_file"; then rc_failed 0 else rc_failed 1 fi else checkproc -p "$lock_file" "$NAGIOS_BIN" fi rc_status -v ;; check) echo -n "Starting configuration check " config_check if [ $? -eq 0 ]; then echo "- passed configuration check" test -f $NAGIOS_CFG_ERR_LOG && rm $NAGIOS_CFG_ERR_LOG rc_reset else echo "- detected Error in configuration files" echo "Please read $NAGIOS_CFG_ERR_LOG" rc_failed fi rc_status -v ;; check_verbose) echo "Running verbose configuration check..." config_check verbose exitcode=$? cat "$NAGIOS_CFG_ERR_LOG" rc_failed $exitcode rc_status -v rc_exit ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|reload|check|check_verbose}" exit 1 ;; esac rc_exit
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor