summaryrefslogtreecommitdiffstats
path: root/web/attachments/154472-nagios_plugins-check_test.patch
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/154472-nagios_plugins-check_test.patch')
-rw-r--r--web/attachments/154472-nagios_plugins-check_test.patch172
1 files changed, 172 insertions, 0 deletions
diff --git a/web/attachments/154472-nagios_plugins-check_test.patch b/web/attachments/154472-nagios_plugins-check_test.patch
new file mode 100644
index 0000000..832c6a0
--- /dev/null
+++ b/web/attachments/154472-nagios_plugins-check_test.patch
@@ -0,0 +1,172 @@
1--- ../../original_sources/nagios-plugins-1.4.2/contrib/check_test 2005-10-11 20:24:13.349222200 -0400
2+++ nagios-plugins-1.4.2/contrib/check_test 2005-10-11 20:22:49.205014064 -0400
3@@ -0,0 +1,169 @@
4+#! /bin/bash
5+
6+# Author: John P. Rouillard - rouilj@cs.umb.edu,
7+# rouilj-check_test@renesys.com
8+# A quick and dirty test program similar to check_dummy, but exit
9+# status is contollable from an external file. It can be used for
10+# testing nagios service dependency and host dependency notification
11+# suppression.
12+#
13+# Entries in the external file are composed of a label and an exit
14+# code, or code list seperated by an = sign.
15+#
16+# The exit code list is any 1, 2 or 3 digit number which will exit
17+# with that status (0, 1, 2 and 3 are valid for nagios). The code 'S'
18+# or 's' will cause the process to sleep for 1 hour in the expectation
19+# that it will recieve a kill signal from nagios.
20+#
21+# The label has one of the following forms:
22+#
23+# hostname-service_name (if -H specified)
24+# service_name (if -E is not specified)
25+# hostname (if -H specified)
26+# default
27+#
28+# The labels are searched for in order. If no matching label is found,
29+# one is appended to the command file, with exit status 0. If duplicate
30+# labels are in the file, the last label takes precidence. So you can
31+# append a label/exit code line to the file and get a change in the
32+# exit code.
33+
34+# Exit code lists look like:
35+#
36+# label=value1,value2,value3,value4,...,valueN
37+#
38+# where value1 is used for this invocation, and a new label entry is
39+# added with value1 put after valueN so that value2 wil be used as
40+# exit code on the next run. This allows deterministic runs of the
41+# program for testing availability metrics and various senarios for
42+# reporting and other related activities.
43+#
44+# Note that regular poll and error poll times along with the number of
45+# retries to go from soft to hard have to be considered when designing
46+# a test.
47+#
48+# Options:
49+help="Usage: $0 -E -s <svc> -H <host> -e <exitcode> -f <file> -ht -m <msg>
50+ -E - exact entry including hostname is needed. Prevents matching
51+ only on service_ name.
52+ -H <hostname> - the hostname this test is running on. No default.
53+ -e <exit code> - used like check dummy, always exits with this
54+ status code. Ignores the external file.
55+ -f <filename> - the external file name used for determining exit
56+ code. Default: /tmp/check_test.
57+ -h - This help text.
58+ -s <service_name> - the service description for this test. Default
59+ the basename of the progam name.
60+ -t - enable tracing info for debugging. Note this will cause
61+ problems is run from nagios.
62+ -m - message to be put out when running.
63+"
64+
65+## standard debugging preamble
66+trace=true
67+if ! [ -z "$SHELL_DEBUG" ]; then
68+ if echo "$SHELL_DEBUG" | grep -i xv > /dev/null 2>&1; then
69+ set -xv
70+ fi
71+ if echo "$SHELL_DEBUG" | grep -i trace > /dev/null 2>&1; then
72+ trace=echo
73+ fi
74+fi
75+
76+## set variables
77+exact=""
78+exitcode=-1
79+filename=/tmp/check_test
80+hostname=""
81+message=""
82+service_name=`basename $0`
83+
84+
85+## parse arguments
86+while getopts -- EH:e:f:hs:t arg
87+do
88+ case "$arg" in
89+ E) exact="yes";;
90+ H) hostname="$OPTARG";;
91+ e) exitcode="$OPTARG";;
92+ f) filename="$OPTARG";;
93+ h) echo "$help"; exit;;
94+ m) message="$OPTARG";;
95+ s) service_name="$OPTARG";;
96+ t) trace=echo;;
97+ *) echo "Usage: $0 -E -s <svc> -H <host> -e <exitcode> -f <file>"
98+ exit 4;;
99+ esac
100+done
101+
102+$trace "parsed arguments: $hostname, $service_name, $exitcode, $filename"
103+
104+## create command file if needed
105+if ! [ -r $filename ]; then
106+ $trace Did not find readable file. Creating config file $filename
107+ # hmm how to capture. Wrapping with `` and assigning to variable
108+ # produces syntax error missing close ` in cygwin bash, but it works
109+ # interactively.
110+ touch $filename 2>&1 || \
111+ eval "echo \"$0: Unable to create $filename, $error\" && exit 2"
112+fi
113+
114+## find the exit code entry for this invocation
115+if [ $exitcode = "-1" ]; then
116+ rule=`grep "^$hostname-$service_name=" $filename | tail -1`
117+ if [ -z "$rule" ]; then
118+ if [ -z "$exact" ]; then
119+ rule=`grep "^$service_name=" $filename | tail -1`
120+ fi
121+ if [ -z "$rule" ]; then
122+ if [ -n "$hostname" ]; then
123+ rule=`grep "^$hostname=" $filename | tail -1`
124+ fi
125+ if [ -z "$rule" ]; then
126+ rule=`grep "^default=" $filename | tail -1`
127+ if [ -z "$rule" ]; then
128+ $trace no matching rule found, creating new rule
129+ rule="${hostname}${hostname:+-}${service_name}=0"
130+ echo $rule >> $filename
131+ fi
132+ fi
133+ fi
134+ fi
135+ $trace rule is $rule
136+
137+ ## split the rule to isolate the exit code(s).
138+ IFS="="
139+ set -- $rule
140+ IFS=""
141+
142+ if [ $# -gt 2 ]; then
143+ echo "$0: Malformed rule $rule:"
144+ exit 2
145+ fi
146+
147+ exitcode="$2"
148+ label=$1
149+fi
150+
151+## exit with message and proper code and rotate exit code list if present
152+while true; do
153+ case $exitcode in
154+ 0) echo $0: $message exiting 0; exit 0;;
155+ 1) echo $0: $message exiting 1; exit 1;;
156+ 2) echo $0: $message exiting 2; exit 2;;
157+ [0-9]|[0-9][0-9]|[0-9][0-9][0-9])
158+ # exit with odd exit codes
159+ echo $0: $message exiting $exitcode; exit $exitcode;;
160+ s|S) sleep 3600 ;; # stall forcing parent nagios to kill us
161+ *,*) IFS=","
162+ set -- $exitcode
163+ exitcode=$1
164+ shift
165+ exitcodes="$*,$exitcode"
166+ echo "$label=$exitcodes" >> $filename
167+ # not checking for bad/missing exit code here. main
168+ # loop will do that.
169+ ;;
170+ *) echo "$0: Unrecognised status code $rule"; exit 2;;
171+ esac
172+done