From b25f4ffef3a908c6835d3ed393f2c696c37652cf Mon Sep 17 00:00:00 2001 From: Lisa Marie Maginnis Date: Wed, 28 May 2014 14:18:52 -0400 Subject: [PATCH] Initial commit --- nagios-website-add.sh | 134 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100755 nagios-website-add.sh diff --git a/nagios-website-add.sh b/nagios-website-add.sh new file mode 100755 index 0000000..26663b7 --- /dev/null +++ b/nagios-website-add.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash + +ssl=0 +www=0 +cname=0 +config_dir=/etc/nagios3/conf.d +config_file_web=$config_dir/web_services.cfg + +export params='' + +function help() { + echo $0': [-s|-W|-D] <-w website> [-h hostname] [-c cname1,cname2,etc...]' + echo -e "\t-s Add SSL monitoring" + echo -e "\t-W Also add a monitor for the WWW record." + echo -e "\t-D Delete the monitor(s) for the hostname/website provided." + echo -e "\t-h Provide a hostname, useful for VHOSTs" + echo -e "\t-c A comma seperated list of cnames to add monitors for." + +} + +function set-params() { + # Array is: use, description, host_name, check_command + params=("$1" "$2" "$3" "$4") +} + +function set-http-params() { + set-params 'http-vhost2' "URL: $1" $2 "check_http_vhost2!$2!$1" +} + +function set-https-params() { + set-params 'http-vhost' "SSL Cert: $1" $2 "check_http_vhost2!$2!$1" +} + +function write-config-header() { + echo "# AUTOGENERATED CONFIG FOR ${params[1]}" + echo "# User: $USER" + echo "# Date: `date '+%D %T'`" +} + +function write-config-footer() { + echo "# END ${params[1]}" +} + +function write-config-body() { + echo "define service {" + echo -e "\tuse\t\t\t${params[0]}" + echo -e "\tdescription\t\t${params[1]}" + echo -e "\thost_name\t\t${params[2]}" + echo -e "\tcheck_command\t\t${params[3]}" + echo "}" +} + +#define service { +# use http-vhost2 +# description www.defectivebydesign.org +# host_name www0.defectivebydesign.org +# check_command check_http_vhost2!www0.defectivebydesign.org!www.defectivebydesign.org +#} + +# Service: SSL CERT +#define service{ +# use http-vhost +# host_name www0.defectivebydesign.org +# description www.defectivebydesign.org SSL cert +# check_command check_ssl_cert!www.defectivebydesign.org +#} + +# Process our args +while getopts "Ww:h:sc:" opt; do + case "${opt}" in + s) + ssl=1 + ;; + h) + host=${OPTARG} + ;; + w) + website=${OPTARG} + ;; + W) + www=1 + ;; + c) + cnames=${OPTARG} + cname=1 + ;; + *) + help + exit 1 + esac +done + +# Print help and quit if website is not provided +if [ -z ${website} ]; then + help + exit 1 +fi + +# Set host_name to website if not provided +if [ -z ${host} ]; then + host=$website +fi + +# Prep CNAMEs (if provided) for a for loop by replacing the delimiter +if [ $cname -eq 1 ]; then + if [ -z ${cnames} ]; then + echo "Error: CNAMEs garbled." + exit 2 + fi + cnames=$(echo $cnames | sed 's/,/ /g') +fi + + +# Basic HTTP check, include basic header +set-http-params $website $host +write-config-header +write-config-body + +# Additional CNAMEs if requested +if [ $cname -eq 1 ]; then + for name in $cnames; do + set-http-params $name.$website $host + write-config-body + done +fi + +# SSL cert check, if requeted +if [ $ssl -eq 1 ]; then + set-https-params $website $host + write-config-body +fi + +# Write out our footer +write-config-footer \ No newline at end of file -- 2.25.1