diff --git a/api.sh b/api.sh index ad39a96..22f193f 100755 --- a/api.sh +++ b/api.sh @@ -105,8 +105,9 @@ print_helpopt() { all: i Make all string comparisons case-insentitive - servicestatus: + servicestatus|hoststatus: c Show fields selected by -f as quoted CSV + C Same as C but also include the fields hostgroupmembers: h Only show hosts (not the complete JSON data) @@ -128,6 +129,10 @@ print_help() { --api < o*bjects | c*onfig | s*ystem > -c|--command check_command= -cca current_check_attempt= + --col column name=: + Ex: name=lk:local - Displays any matching name with 'local' anywhere in the string. + Ex: name=in:localhost,nagios,testhost - Displays any matching name with the comma-separated list. + Note: Multiple --col selectors are not valid at this time -cnn current_notification_number= --cname command_name]=<...> --cline command_line]=<...> @@ -150,10 +155,12 @@ print_help() { --key APIKEY= --keyfile APIkeyFile= -o|--opt cmdOptions= (endpoint specific options. See --helpopt) + --order orderby : --output output text= -Q|--quick Sets -f to .host_name,.service_description,.current_state,.state_type,.problem_has_been_acknowledged (assumes servicestatus) -q Same as --quick but add -o c -qq Same as --quick but add -o c but also print the first line of the CSV output (fields) + --records records : --save save JSON to= -sg|--servicegroup servicegroup= -sgm servicegroup_members (mainly for creating servicegroups) @@ -210,6 +217,7 @@ while [ -n "$1" ]; do --api) get_myAPI "$2"; shift 2;; -c|--command) myDir[check_command]="$2"; shift 2;; -cca) myDir[current_check_attempt]="$2"; shift 2;; + --col) myOptions[Column]="$2"; shift 2;; --cname) myDir[command_name]="$2"; shift 2;; --cline) myDir[command_line]="$2"; shift 2;; --ctrace) myOptions[CommandTrace]="true"; shift 1;; @@ -230,10 +238,12 @@ while [ -n "$1" ]; do --key) apikey="$2"; shift 2;; --keyfile) apikeyfile="$2"; shift 2;; -o|--opt) myOptions[Options]+="$2,"; shift 2;; + --order) myOptions[OrderBy]="$2"; shift 2;; --output) myDir[output]="$2"; shift 2;; -q) myOptions[Quick]="true"; myOptions[Options]+="c,"; shift 1;; - -qq) myOptions[Quick]="true"; myOptions[Options]+="c,c,"; shift 1;; + -qq) myOptions[Quick]="true"; myOptions[Options]+="c,C,"; shift 1;; -Q|--quick) myOptions[Quick]="true"; shift 1;; + --records) myOptions[Records]="$2"; shift 2;; --save) myOptions[Save]="$2"; shift 2;; -sg|--servicegroup) myDir[servicegroup_name]="$2"; shift 2;; -sgm) myDir[servicegroup_members]="$2"; shift 2;; @@ -270,10 +280,17 @@ fi do_api() { api_start="$1" api_command="$2" - url="${XI_URL}/api/v1/${api_start}/${api_command}?pretty=0" + url="${XI_URL}/api/v1/${api_start}/${api_command}?pretty=0&apikey=${APIKEY}" [ -n "${myOptions[Start]}" ] && url+="&starttime=${myOptions[Start]}" [ -n "${myOptions[End]}" ] && url+="&endtime=${myOptions[End]}" - url+="&apikey=${APIKEY}" + [ -n "${myOptions[Records]}" ] && url+="&records=${myOptions[Records]}" + [ -n "${myOptions[OrderBy]}" ] && url+="&orderby=${myOptions[OrderBy]}" + if [ -n "${myOptions[Column]}" ]; then + colName=`echo "${myOptions[Column]}" | cut -d= -f 1` + colVal=`echo "${myOptions[Column]}" | cut -d= -f 2` + do_debug 1 "colName=$colName colVal=$colVal" + url+="&$colName=$colVal" + fi do_debug 2 "start=$1 command=$2" do_debug 1 "Executing: $url" $curl -XGET -k "$url"