Different configurations for backup times

Matthew Jurgens nagiosusers at edcint.co.nz
Sat May 16 09:02:04 CEST 2009


Anthony Montibello wrote:
> I always use a daily cron script/s to setup Downtime schedual to 
> handle that issue.
> the flexable downtime, may be better if the hosts always recover 
> within X min while Fixed is better if you know the host will go down 
> at X and e back up at Y
>  
> http://nagios.sourceforge.net/docs/3_0/downtime.html
>  
Here is a script that I use that schedules downtime for a host/service
You could run it out of your backup pre-script
Modify it for your needs

#!/bin/bash
#
# This script is used to submit downtime to Nagios
# see the usage function for info on how to use it

. /opt/maj/standard

#================================ CONFIG 
=====================================
# location of nagios config file
nagios_cfg=/etc/nagios/nagios.cfg
echocmd="/bin/echo"

# get the current date/time in seconds since UNIX epoch
datetime=`date +%s`

author="$0"

#--------------------------------- AUTO CONFIG 
-------------------------------
# you should not need to change this
# get the name of the nagios command file
nagios_cmd=`awk -F= '/^command_file/ {print $2}' $nagios_cfg`
if [ ! -p "$nagios_cmd" ]; then
   echo "Got Nagios CMD file as \"$nagios_cmd\" and it is not a valid 
command file"
   exit 1
fi

#================================ FUNCTIONS 
=====================================
#--------------------------------------------------------------------------------
usage ()
{
cat << EOT
Usage: $0 -h HOST -s SERVICENAME -c COMMENT -a "STARTTIME" -b "ENDTIME"

where
HOST        is the name of the host that this downtime is for
SERVICENAME is the name of the service that this downtime is for
            This is optional. If excluded we schedule downtime for the host
COMMENT     is the comment associated with the downtime
STARTTIME   format is the same as accepted by the date --date=STRING command
            eg "now", "+30 minutes", "6 months 15 day", "2007-09-01 
16:00:00"
ENDTIME     as for STARTTIME

EOT
exit 1
}
#--------------------------------------------------------------------------------
write_to_cmd_file () {
# create the command line to add to the command file
# sample format:
# 
SCHEDULE_SVC_DOWNTIME;mail.optusnet.com.au;SMTP;1188879530;1188880130;1;0;7200;Matthew 
Jurgens;COMMENT

# if $servicename is set it will supply its own ;
cmdline="\[$datetime\] 
$downtime_cmd;$host;$servicename$starttime_sec;$endtime_sec;1;0;$duration;$author;$comment"
 
# append the command to the end of the command file
`$echocmd $cmdline >> $nagios_cmd`
}
#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
#================================ MAIN =====================================

# ---------- GET Options
[ $# -ge 1 ] || usage

# Check for options
while getopts h:s:c:a:b: OPT
do
   case $OPT in
   h)
      host=$OPTARG
      ;;
   s)
      servicename=$OPTARG
      ;;
   c)
      comment=$OPTARG
      ;;
   a)
      starttime=$OPTARG
      ;;
   b)
      endtime=$OPTARG
      ;;
   *)
      usage
      ;;
   esac
done
shift `expr $OPTIND - 1`

if [ -z "$host" -o -z "$comment" -o -z "$starttime" -o -z "$endtime" ]; then
   usage
fi

if [ -z "$servicename" ]; then
   # we schedule downtime for the host
   downtime_cmd="SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME"
else
   # we schedule downtime for the service
   downtime_cmd="SCHEDULE_SVC_DOWNTIME"
  
   # add a ; to the end of the servicename so that it fits the correct 
syntax
   servicename="$servicename;"
fi


# convert starttime and endtime to seconds
starttime_sec=`date --date="$starttime" +'%s'`
endtime_sec=`date --date="$endtime" +'%s'`

if [ "$starttime_sec" -a "$endtime_sec" ]; then

   # work out the duration
   let duration=endtime_sec-starttime_sec

   write_to_cmd_file
else
   echo "ERROR:Starttime or Endtime date format not correct"
fi


-- 
Smartmon System Monitoring <http://www.smartmon.com.au>
www.smartmon.com.au
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/users/attachments/20090516/5252b5ad/attachment.html>
-------------- next part --------------
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
-------------- next part --------------
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null


More information about the Users mailing list