Initial commit
authorLisa Marie Maginnis <lisam@fsf.org>
Wed, 28 May 2014 18:18:52 +0000 (14:18 -0400)
committerLisa Marie Maginnis <lisam@fsf.org>
Wed, 28 May 2014 18:18:52 +0000 (14:18 -0400)
nagios-website-add.sh [new file with mode: 0755]

diff --git a/nagios-website-add.sh b/nagios-website-add.sh
new file mode 100755 (executable)
index 0000000..26663b7
--- /dev/null
@@ -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