File rcnagircbot of Package nagircbot

#!/bin/sh
#
#     Copyright (C) 1995--2005  Kurt Garloff, SUSE / Novell Inc.
#          
#     This library is free software; you can redistribute it and/or modify it
#     under the terms of the GNU Lesser General Public License as published by
#     the Free Software Foundation; either version 2.1 of the License, or (at
#     your option) any later version.
#			      
#     This library is distributed in the hope that it will be useful, but
#     WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#     Lesser General Public License for more details.
#      
#     You should have received a copy of the GNU Lesser General Public
#     License along with this library; if not, write to the Free Software
#     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
#     USA.
#
# /etc/init.d/nagircbot
#   and its symbolic link
# /usr/sbin/rcnagircbot
#
# LSB compatible service control script; see http://www.linuxbase.org/spec/
# 
# Note: This template uses functions rc_XXX defined in /etc/rc.status on
# UnitedLinux/SUSE/Novell based Linux distributions. If you want to base your
# script on this template and ensure that it works on non UL based LSB 
# compliant Linux distributions, you either have to provide the rc.status
# functions from UL or change the script to work without them.
# See skeleton.compat for a template that works with other distros as well.
#
### BEGIN INIT INFO
# Provides:          nagircbot
# Required-Start:    $syslog $remote_fs
# Should-Start:      $time 
# Required-Stop:     $syslog $remote_fs
# Should-Stop:       $time 
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Nagios IRC Bot
# Description:       IRC Bot announcing the Nagios status on an IRC channel.
#	Please configure the Bot via /etc/sysconfig/nagircbot
### END INIT INFO
# 

# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
IRCBOT_BIN='/usr/bin/nagircbot'
IRCBOT_CONFIG='/etc/sysconfig/nagircbot'
IRCBOT_PID='/var/run/nagircbot.pid'
test -x "$IRCBOT_BIN" || { echo "$IRCBOT_BIN not installed" >&2; 
	if [ "$1" = "stop" ]; then exit 0;
	else exit 5; fi; }

# Check for existence of needed config file and read it
test -r "$IRCBOT_CONFIG" || { echo "$IRCBOT_CONFIG not existing" >&2;
	if [ "$1" = "stop" ]; then exit 0;
	else exit 6; fi; }

# Read config	
. "$IRCBOT_CONFIG"
. /etc/rc.status

# Reset status of this service
rc_reset

case "$IRCBOT_USER" in
	'')
		echo "IRCBOT_USER is not set. Please fix in $IRCBOT_CONFIG" >&2
		if [ "$1" = "stop" ]; then 
			exit 0;
		else 
			exit 6;
		fi;     
esac

case "$NAGIOS_STATUSFILE" in 
	'')
	    echo "NAGIOS_STATUSFILE is not set. Please fix in $IRCBOT_CONFIG" >&2
    	if [ "$1" = "stop" ]; then
	        exit 0;
	    else
	        exit 6;
	    fi;
	;;
esac

case "$IRCBOT_USER" in 
	'')
		echo "IRCBOT_USER is not set. Asuming 'nobody'" >&2
		IRCBOT_USER='nobody'
	;;
esac

case "$OLD_NAGIOS_FORM" in
	[yY][eE][sS])
		IRCBOT_OPTIONS='-x'
	;;
	*)
		IRCBOT_OPTIONS='-X'
	;;
esac

case "$SHOW_HARD_STATES" in
	[yY][eE][sS])
		IRC_SHOW_HARD_STATES='-H'
	;;
	*)
		IRC_SHOW_HARD_STATES=''
	;;
esac

case "$SHOW_SOFT_STATES" in
	[yY][eE][sS])
		IRC_SHOW_SOFT_STATES='-S'
	;;
	*)
		IRC_SHOW_SOFT_STATES=''
	;;
esac

case "$SHOW_ONLY_CRITICAL_UNKNOWN" in
	[yY][eE][sS])
		IRC_SHOW_ONLY_CRITICAL_UNKNOWN='-R'
	;;
	*)
		IRC_SHOW_ONLY_CRITICAL_UNKNOWN=''
	;;
esac

case "$IRC_SERVER" in
	'')
		echo "IRC_SERVER is not set.  Please fix in $IRCBOT_CONFIG" >&2
		    if [ "$1" = "stop" ]; then
		        exit 0;
		    else
		        exit 6;
		    fi;
	;;
esac	

case "$IRC_CHANNEL" in
	'')
		echo "IRC_CHANNEL is not set.  Please fix in $IRCBOT_CONFIG" >&2
		    if [ "$1" = "stop" ]; then
		        exit 0;
		    else
		        exit 6;
		    fi;
	;;
esac	

case "$IRC_NICK" in
	'')
		echo "IRC_NICK is not set.  Please fix in $IRCBOT_CONFIG" >&2
		    if [ "$1" = "stop" ]; then
		        exit 0;
		    else
		        exit 6;
		    fi;
	;;
esac	

case "$CHECK_INTERVAL" in
	'')
		echo "CHECK_INTERVAL is not set.  Please fix in $IRCBOT_CONFIG" >&2
		    if [ "$1" = "stop" ]; then
		        exit 0;
		    else
		        exit 6;
		    fi;
	;;
esac	

if [ "$NAGIOS_TEST" != "" ]; then
	TEST="-T $NAGIOS_TEST"
else
	TEST=''
fi

if [ "$IRC_USERNAME" != "" ]; then
	USERNAME="-u $IRC_USERNAME"
else
	USERNAME=""
fi

if [ "$IRC_PASSWORD" != "" ]; then
	PASSWORD="-p $IRC_PASSWORD"
else
	PASSWORD=''
fi

if [ "$IRC_NAME" != "" ]; then
	NAME="-I $IRC_NAME"
else
	NAME=''
fi

IRCBOT_OPTIONS="$IRCBOT_OPTIONS -f $NAGIOS_STATUSFILE -z $IRCBOT_USER -s $IRC_SERVER -c $IRC_CHANNEL -n $IRC_NICK -P $IRCBOT_PID $TEST -i $CHECK_INTERVAL $USERNAME $PASSWORD $NAME"

case "$1" in
    start)
            echo -n "Starting Nagios IRC Bot "
            $IRCBOT_BIN $IRCBOT_OPTIONS 
            rc_status -v
	;;
    stop)
            echo -n "Shutting down Nagios IRC Bot "
            /sbin/killproc -TERM $IRCBOT_BIN
            rc_status -v
	;;
    try-restart|condrestart)
            if test "$1" = "condrestart"; then
                echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
            fi
            $0 status
            if test $? = 0; then
                $0 restart
            else
                rc_reset	# Not running is not a failure.
            fi
            rc_status
	;;
    restart)
            $0 stop
            $0 start
            rc_status
	;;
    force-reload)
            echo -n "Reload service Nagios IRC Bot "
            $0 try-restart
            rc_status
	;;
    reload)
            echo -n "Reload service Nagios IRC Bot is not supported"
            rc_failed 3
            rc_status -v
	;;
    status)
            echo -n "Checking for service Nagios IRC Bot "
            /sbin/checkproc $IRCBOT_BIN
            rc_status -v
	;;
    *)
            echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
            exit 1
	;;
esac
rc_exit
openSUSE Build Service is sponsored by