diff --git a/napi b/napi index f1150dd..6987022 100755 --- a/napi +++ b/napi @@ -167,6 +167,8 @@ print_help() { -s|--service service_description= --start For things that have date selectors, this is a "show me after" selector: YYYYMMDDHHMMSS --end For things that have date selectors, this is a "show me before" selector: YYYYMMDDHHMMSS + --status Quick select for showing similar things that you would see on main servicestatus page in the GUI + --bstatus Same as --status but only show things that are not in an OK state --state 0, 1, or 2 (or other, I suppose) --stype 0, 1 (SOFT or HARD) --test Don't call the API, just show what would happen @@ -257,6 +259,7 @@ while [ -n "$1" ]; do --end) myOptions[End]="$2"; shift 2;; --start) myOptions[Start]="$2"; shift 2;; --status) myOptions[Status]="true"; shift 1;; + --bstatus) myOptions[Status]="true"; myOptions[BStatus]="true"; shift 1;; --test) myOptions[TestMode]="true"; shift 1;; *) shift 1;; esac @@ -272,7 +275,11 @@ if [ -n "${myOptions[Status]}" ]; then myOptions[Apply]="" myOptions[Options]="" myOptions[Quick]="true" - myOptions[Options]+="c," + myOptions[Options]+="c,C," + # If we did a bstatus, then we only want things that are bad + if [ -n "${myOptions[BStatus]}" ]; then + myDir[current_state]="[^0]" + fi fi if [ -n "$APIkeyFile" -a -r "$APIkeyFile" ]; then @@ -303,8 +310,8 @@ do_api() { url+="&$colName=$colVal" fi do_debug 2 "start=$1 command=$2" - do_debug 1 "Executing: $url" - $curl -XGET -k "$url" + do_debug 1 "Executing (tesmode=${myOptions[TestMode]}): $url" + [ -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" @@ -357,26 +364,22 @@ fi # Grab a copy of the JSON data so we don't have to keep making calls over and over # If we used an existing file, then just use that # If we're in test mode, then skip this part -if [ -z "${myOptions[TestMode]}" ]; then - if [ -z "${myOptions[File]}" ]; then - tmpJSON=`mktemp` - do_debug 1 "tmp file is $tmpJSON" - do_debug 2 " myAPI is ${myOptions[API]} and myAPIep is ${myOptions[APIep]}" - do_api "${myOptions[API]}" "${myOptions[APIep]}" > $tmpJSON - else - do_debug 1 "myFile=${myOptions[File]}" - tmpJSON="${myOptions[File]}" - do_debug 1 "tmpJSON=$tmpJSON" - fi - - # if mySave is not empty, then we're just saving it into the file called ${myOptions[Save]} - if [ -n "${myOptions[Save]}" ]; then - mv $tmpJSON ${myOptions[Save]} - do_debug 1 "JSON data saved to ${myOptions[Save]}" - exit - fi +if [ -z "${myOptions[File]}" ]; then + tmpJSON=`mktemp` + do_debug 1 "tmp file is $tmpJSON" + do_debug 2 " myAPI is ${myOptions[API]} and myAPIep is ${myOptions[APIep]}" + do_api "${myOptions[API]}" "${myOptions[APIep]}" > $tmpJSON else - echo "### TEST MODE - Skipping API call (testMode=${myOptions[TestMode]}) ###" + do_debug 1 "myFile=${myOptions[File]}" + tmpJSON="${myOptions[File]}" + do_debug 1 "tmpJSON=$tmpJSON" +fi + +# if mySave is not empty, then we're just saving it into the file called ${myOptions[Save]} +if [ -n "${myOptions[Save]}" ]; then + mv $tmpJSON ${myOptions[Save]} + do_debug 1 "JSON data saved to ${myOptions[Save]}" + exit fi # Helper functions for creating our jqString @@ -422,7 +425,7 @@ case "${myOptions[APIep]}" in tmpQuick=".service_object_id,.host_name,.service_description" ;; hoststatus) tmpQuick=".host_name,.address,.current_state,.state_type,.last_check,.current_check_attempt,.normal_check_interval,.retry_check_interval,.max_check_attempts,.check_command";; - servicestatus) tmpQuick=".service_description,.host_name,.current_state,.state_type,.last_check,.current_check_attempt,.normal_check_interval,.retry_check_interval,.max_check_attempts,.check_command";; + servicestatus) tmpQuick=".service_description,.host_name,.current_state,.state_type,.last_check,.current_check_attempt,.normal_check_interval,.retry_check_interval,.max_check_attempts,.output";; contact) tmpQuick=".contact_name,.email_address,.host_notifications_enabled,.service_notifications_enabled,.is_active";; command) ;; statehistory) tmpQuick=".host_name,.service_description,.state_time,.state_change,.state,.state_type,.current_check_attempt,.max_check_attempts,.last_state,.last_hard_state,.output";; @@ -445,5 +448,5 @@ if [ -n "${myOptions[TestMode]}" ]; then echo "cat | jq -r \"$jqString\"" else cat $tmpJSON | jq -r "$jqString" - [ -z "${myOptions[File]}" ] && rm $tmpJSON fi +[ -z "${myOptions[File]}" ] && rm $tmpJSON