Scheduled Downtime

Schedule Downtime via cron

Description:

A couple of scripts that could be run from cron to schedule downtime automatically.

Current Version

Last Release Date

May 27, 2009

Compatible With

Owner


Project Files
Project Notes
Reviews (2) Add a Review
Fix for schedule_host_downtime
by sevenymedia, October 31, 2013

First, thanks for both scripts, helped out a lot! One thing, I couldn't schedule host downtime using your script and found out that it has to to with a missing trigger_id in the commandline call... at least for 3.4.1 $trigger_id=0 cmdline="[$datetime] SCHEDULE_HOST_DOWNTIME;$hostname;$start_time;$end_time;$fixed;$trigger_id;$duration;$comment_author;$comment_data"



nice scripts but i'll fix it for 3.2.x nagios version
by gruef, January 31, 2011

this fix will accept a $9 parameter for all_services or for all_hosts, so you need to run only one script from crontab #!/bin/bash # # Write a command to the Nagios command file to cause # it to schedule service downtime. # # Author: Sam Tilders sam@jovianprojects.com.au # Bugfix and adding syntax for 3.2.x nagios version # Frank Gruenwald f.gruenwald@spsg.de # # Based on the example event handler scripts and cmd.c/.cgi # # Requires: # GNU Date (for date formatting options) # Bash > 2.x (for inline variable regex substitution on the comment_data) # Notes: # 1) In order for Nagios to process any commands that # are written to the command file, you must enable # the check_external_commands option in the main # configuration file. # Caveats: # Using "date" to validate the command line date format doesn't always pick # up all mistakes in the date format. Sometimes "date" seems to invent something # that might have been what you intented. # Makes no attempt to verify the hostname or service desc before passing them to # the command pipe. Nagios seems to ignore the command if it doesn't match. # Write a command to the Nagios command file to cause # it to schedule host downtime # Example: # A cron entry to schedule downtime for the nntp service every day at 0400 while # other cron jobs (locate database update) slow the machine down. # 30 0 * * * schedule_svc_downtime news NNTP "`date --iso-8601` 04:00:00" "`date --iso-8601` 05:00:00" 1 3600 auto "while cron does things" # There are utilities such as "shellsupport" that will do date manipulation allowing shell scripts # to wrap around this command to schedule for days in advance instead of same date. usage() { echo "Usage: $0 or " echo " Times must be in the form "CCYY-MM-DD HH:mm:ss" and will probably need to be quoted." echo " fixed is either 1 or 0 and indicates that the time period is fixed and duration should be ignored" echo " length of the downtime in seconds, only used if not fixed downtime" echo " user who is requesting the downtime" echo " comment to place on the downtime, probably will need to be quoted." } if [ $# -lt 9 ]; then echo "$0: Too few parameters" usage exit 1 fi if [ $# -gt 9 ]; then echo "$0: Too many parameters" usage exit 1 fi hostname=$1 servicedesc=$2 raw_start=$3 raw_end=$4 fixed=$5 duration=$6 comment_author=$7 # command is comment with ; replaced for space comment_data=${8/;/ } echocmd="/bin/echo" CommandFile="/opt/nagios/var/rw/nagios.cmd" # get the current date/time in seconds since UNIX epoch datetimes=`date +%s` datetime="[$datetimes]" start_time=`date -d "$raw_start" +%s` if [ $? != 0 ]; then echo "Bad format for start time." usage exit 1 fi end_time=`date -d "$raw_end" +%s` if [ $? != 0 ]; then echo "Bad format for end time." usage exit 1 fi if [ $fixed != 1 -a $fixed != 0 ]; then echo "Fixed must be 1 or 0" usage exit 1 fi # create the command line to add to the command file #cmdline="$datetime SCHEDULE_SVC_DOWNTIME;$hostname;$servicedesc;$start_time;$end_time;$fixed;$duration;7200;$comment_author;$comment_data" case "$9" in all_services) cmdline="$datetime SCHEDULE_HOST_SVC_DOWNTIME;$hostname;$start_time;$end_time;$fixed;$duration;7200;$comment_author;$comment_data" ;; all_hosts) cmdline="$datetime SCHEDULE_HOST_DOWNTIME;$hostname;$start_time;$end_time;$fixed;$duration;7200;$comment_author;$comment_data" ;; esac # append the command to the end of the command file echo $cmdline >> $CommandFile



Add a Review

You must be logged in to submit a review.

Thank you for your review!

Your review has been submitted and is pending approval.

Recommend

To:


From:


Thank you for your recommendation!

Your recommendation has been sent.

Project Stats
Rating
4.4 (5)
Favorites
0
Views
120,711