--disable and --enable now modify service active_checks_enabled accordingly.
This commit is contained in:
@@ -7,7 +7,6 @@ APIkeyFile=".nagiosapikey"
|
||||
APIKEY=""
|
||||
XI_URL=""
|
||||
curl="curl -k -s"
|
||||
# curl -XGET "https://192.168.1.19/nagiosxi/api/v1/objects/service?apikey=<key>"
|
||||
|
||||
# myDir (for "Directives") are now too big for individual variables. We'll read them into an associative array instead
|
||||
declare -A myDir
|
||||
@@ -16,10 +15,10 @@ declare -A myDir
|
||||
declare -A myOptions
|
||||
myOptions[API]="objects"
|
||||
myOptions[APIep]="servicestatus"
|
||||
myOptions[TestMode]=""
|
||||
myOptions[Create]=""
|
||||
myOptions[Apply]=""
|
||||
myOptions[Options]=""
|
||||
#myOptions[TestMode]=""
|
||||
#myOptions[Create]=""
|
||||
#myOptions[Apply]=""
|
||||
#myOptions[Options]=""
|
||||
verbose="0"
|
||||
tmpJSON=""
|
||||
tmpQuick=""
|
||||
@@ -168,6 +167,8 @@ print_help() {
|
||||
--create doCreate="true"
|
||||
--apply If we're creating something, then Apply Configuration
|
||||
--delete If we're creating something, then delete it instead (host and service must be specified)
|
||||
--disable Disable a service in a config (must use -cn and -s; sets the service to active_checks_enabled=0)
|
||||
--enable Enable a service in a config (must use -cn and -s; sets the service to active_checks_enabled=1)
|
||||
-D <Nagios Config Directive>=<value> This will take anything listed as a Nagios configuration directive and search for it
|
||||
-f|--fields JQ-valid list of fields to show=<value>
|
||||
--file load JSON from=<value>
|
||||
@@ -271,6 +272,8 @@ while [ -n "$1" ]; do
|
||||
--ctrace) myOptions[CommandTrace]="true"; shift 1;;
|
||||
--create) myOptions[Create]="true"; shift 1;;
|
||||
--delete) myOptions[Delete]="true"; shift 1;;
|
||||
--disable) myOptions[Disable]="true"; shift 1;;
|
||||
--enable) myOptions[Enable]="true"; shift 1;;
|
||||
--addvar) myOptions[AddVar]="$2"; shift 1;;
|
||||
-f|--fields) myOptions[Fields]="$2"; shift 2;;
|
||||
--file) myOptions[File]="$2"; shift 2;;
|
||||
@@ -295,13 +298,16 @@ done
|
||||
[ "${myOptions[API]}" = "config" -a "${myOptions[APIep]}" = "servicestatus" ] && myOptions[APIep]="service"
|
||||
[ "${myOptions[API]}" = "config" -a "${myOptions[APIep]}" = "hoststatus" ] && myOptions[APIep]="host"
|
||||
|
||||
# Convert command line date formats to UNIX time
|
||||
[ -n "${myOptions[Start]}" ] && myOptions[Start]=`convert_time "${myOptions[Start]}"`
|
||||
[ -n "${myOptions[End]}" ] && myOptions[End]=`convert_time "${myOptions[End]}"`
|
||||
|
||||
# If we're doing status mode, then override a bunch of other options
|
||||
if [ -n "${myOptions[Status]}" ]; then
|
||||
myOptions[API]="objects"
|
||||
myOptions[APIep]="servicestatus"
|
||||
myOptions[Create]=""
|
||||
myOptions[Disable]=""
|
||||
myOptions[Apply]=""
|
||||
myOptions[Options]=""
|
||||
myOptions[Quick]="true"
|
||||
@@ -318,9 +324,10 @@ do_debug 1 "Looking for url=$url in $APIkeyFile"
|
||||
if [ -z "$XI_URL" ]; then
|
||||
XI_URL="$url"
|
||||
APIKEY="$key"
|
||||
continue
|
||||
do_debug 1 "Found url=$url key=$key"
|
||||
break
|
||||
fi
|
||||
do_debug 2 "Looking for url=$url XI_URL=$XI_URL"
|
||||
do_debug 2 "-> Looking for url=$url XI_URL=$XI_URL"
|
||||
if [[ "$url" =~ "$XI_URL" ]]; then
|
||||
XI_URL="$url"
|
||||
APIKEY="$key"
|
||||
@@ -328,6 +335,7 @@ do_debug 2 "Looking for url=$url XI_URL=$XI_URL"
|
||||
done < "$APIkeyFile"
|
||||
fi
|
||||
|
||||
do_debug 1 "Final URL=$XI_URL and key=$APIKEY"
|
||||
[ -z "$XI_URL" -o -z "$APIKEY" ] && echo "Empty URL or Key." && exit
|
||||
|
||||
do_api() {
|
||||
@@ -349,7 +357,7 @@ do_api() {
|
||||
[ -z "${myOptions[TestMode]}" ] && $curl -XGET -k "$url"
|
||||
}
|
||||
|
||||
# curl -XPOST "http://192.168.1.128/nagiosxi/api/v1/config/hostgroup?apikey=fsZZ4pXaKaVjSG7IYcjMRYhK8NqcqN2NGPck8gPhFoZMJGKj4YUjZCF8qSqsK7Ln&pretty=1" -d "hostgroup_name=testapihostgroup&alias=HostGroup&applyconfig=1"
|
||||
# curl -XPOST "http://<host>/nagiosxi/api/v1/config/hostgroup?apikey=fsZZ4pXaKaVjSG7IYcjMRYhK8NqcqN2NGPck8gPhFoZMJGKj4YUjZCF8qSqsK7Ln&pretty=1" -d "hostgroup_name=testapihostgroup&alias=HostGroup&applyconfig=1"
|
||||
do_api_post() {
|
||||
api_start="$1"
|
||||
api_command="$2"
|
||||
@@ -405,8 +413,8 @@ create_servicegroup() {
|
||||
}
|
||||
|
||||
# Given a config_name and service_description, set the host_name[s] to be the list given in -h
|
||||
# NEED: curl -XPUT "http://192.168.1.15/nagiosxi/api/v1/config/service/NAS/Physical+Disks?apikey=9RTG9Aq2NTfefE3XeAiDUbacmNvOJPWfRV3Vbs5DS8ZCCAr6XrIUDLqZeBCceQUo&pretty=1&host_name=NAS-H,NAS-W"
|
||||
# GOT: curl -k -s -XPUT -k "http://192.168.1.15/nagiosxi/api/v1/config/service/NAS/Physical+Disks?apikey=9RTG9Aq2NTfefE3XeAiDUbacmNvOJPWfRV3Vbs5DS8ZCCAr6XrIUDLqZeBCceQUo&pretty=0&host_name=NAS-H,NNA&applyconfig=0"
|
||||
# NEED: curl -XPUT "http://<host>/nagiosxi/api/v1/config/service/NAS/Physical+Disks?apikey=<token>&pretty=1&host_name=NAS-H,NAS-W"
|
||||
# GOT: curl -k -s -XPUT -k "http://<host>/nagiosxi/api/v1/config/service/NAS/Physical+Disks?apikey=<token>&pretty=0&host_name=NAS-H,NNA&applyconfig=0"
|
||||
update_service() {
|
||||
cname=`echo "${myDir[config_name]}" | tr " " "+"`
|
||||
sname=`echo "${myDir[service_description]}" | tr " " "+"`
|
||||
@@ -414,6 +422,28 @@ update_service() {
|
||||
do_api_put config "service/$cname/$sname" "host_name=$hname"
|
||||
}
|
||||
|
||||
do_enable() {
|
||||
do_debug 1 "about to enable a service"
|
||||
cname=`echo "${myDir[config_name]}" | tr " " "+"`
|
||||
sname=`echo "${myDir[service_description]}" | tr " " "+"`
|
||||
if [ -z "$cname" -o -z "$sname" ]; then
|
||||
echo "When using --enable then you must specify -cn for the config name and -s for the service to enable"
|
||||
exit 1
|
||||
fi
|
||||
do_api_put config "service/$cname/$sname" "active_checks_enabled=1"
|
||||
}
|
||||
|
||||
do_disable() {
|
||||
do_debug 1 "about to disable a service"
|
||||
cname=`echo "${myDir[config_name]}" | tr " " "+"`
|
||||
sname=`echo "${myDir[service_description]}" | tr " " "+"`
|
||||
if [ -z "$cname" -o -z "$sname" ]; then
|
||||
echo "When using --disable then you must specify -cn for the config name and -s for the service to disable"
|
||||
exit 1
|
||||
fi
|
||||
do_api_put config "service/$cname/$sname" "active_checks_enabled=0"
|
||||
}
|
||||
|
||||
# Delete a service, given hostname and service_description
|
||||
do_delete() {
|
||||
do_debug 1 "Trying to delete host and service, so let's verify first"
|
||||
@@ -440,11 +470,11 @@ do_apply() {
|
||||
do_api_post system applyconfig
|
||||
}
|
||||
|
||||
### curl -XPUT "http://X.X.X.X/nagiosxi/api/v1/config/host/$x?apikey=KEY&pretty=1&old_host_name=testapihost&_foo=bartoo"
|
||||
# curl -XPUT "http://X.X.X.X/nagiosxi/api/v1/config/host/$x?apikey=KEY&pretty=1&old_host_name=testapihost&_foo=bartoo"
|
||||
# If we used --addvar then we want to add a custom macro to a host. Other options available later
|
||||
if [ -n "${myOptions[AddVar]}" ]; then
|
||||
if [ -z "${myDir[host_name]}" ]; then
|
||||
echo "If using --addvar then you must specify -h for the host to add to"
|
||||
echo "When using --addvar then you must specify -h for the host to add to"
|
||||
exit 1
|
||||
fi
|
||||
hname=`echo "${myDir[host_name]}" | tr " " "+"`
|
||||
@@ -462,6 +492,20 @@ if [ -n "${myOptions[Create]}" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
# If we want to "--enable" [a service] then let's make that happen
|
||||
if [ -n "${myOptions[Enable]}" ]; then
|
||||
do_enable
|
||||
[ -n "${myOptions[Apply]}" -a -z "${myOptions[TestMode]}" ] && do_apply
|
||||
exit
|
||||
fi
|
||||
|
||||
# If we want to "--disable" [a service] then let's make that happen
|
||||
if [ -n "${myOptions[Disable]}" ]; then
|
||||
do_disable
|
||||
[ -n "${myOptions[Apply]}" -a -z "${myOptions[TestMode]}" ] && do_apply
|
||||
exit
|
||||
fi
|
||||
|
||||
# If all we said was --apply, then we want to apply previous changes
|
||||
if [ -n "${myOptions[Apply]}" ]; then
|
||||
do_apply
|
||||
|
||||
Reference in New Issue
Block a user