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