diff options
Diffstat (limited to 'plugins/negate.c')
-rw-r--r-- | plugins/negate.c | 147 |
1 files changed, 66 insertions, 81 deletions
diff --git a/plugins/negate.c b/plugins/negate.c index d1fcb5dd..faf81b34 100644 --- a/plugins/negate.c +++ b/plugins/negate.c | |||
@@ -1,68 +1,79 @@ | |||
1 | /****************************************************************************** | 1 | /****************************************************************************** |
2 | * | 2 | |
3 | * Program: Inverting plugin wrapper for Nagios | 3 | This program is free software; you can redistribute it and/or modify |
4 | * License: GPL | 4 | it under the terms of the GNU General Public License as published by |
5 | * | 5 | the Free Software Foundation; either version 2 of the License, or |
6 | * License Information: | 6 | (at your option) any later version. |
7 | * | 7 | |
8 | * This program is free software; you can redistribute it and/or modify | 8 | This program is distributed in the hope that it will be useful, |
9 | * it under the terms of the GNU General Public License as published by | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | * the Free Software Foundation; either version 2 of the License, or | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 | * (at your option) any later version. | 11 | GNU General Public License for more details. |
12 | * | 12 | |
13 | * This program is distributed in the hope that it will be useful, | 13 | You should have received a copy of the GNU General Public License |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | along with this program; if not, write to the Free Software |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
16 | * GNU General Public License for more details. | 16 | |
17 | * | 17 | ******************************************************************************/ |
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
21 | * | ||
22 | * $Id$ | ||
23 | * | ||
24 | *****************************************************************************/ | ||
25 | 18 | ||
26 | const char *progname = "negate"; | 19 | const char *progname = "negate"; |
27 | #define REVISION "$Revision$" | 20 | const char *revision = "$Revision$"; |
28 | #define COPYRIGHT "2002" | 21 | const char *copyright = "2002-2003"; |
29 | #define AUTHOR "Karl DeBisschop" | 22 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
30 | #define EMAIL "kdebisschop@users.sourceforge.net" | 23 | |
31 | #define SUMMARY "Negates the status of a plugin (returns OK for CRITICAL, and vice-versa).\n" | 24 | #define DEFAULT_TIMEOUT 9 |
25 | |||
26 | #include "common.h" | ||
27 | #include "utils.h" | ||
28 | #include "popen.h" | ||
29 | |||
30 | void | ||
31 | print_usage (void) | ||
32 | { | ||
33 | printf (_("Usage: %s [-t timeout] <definition of wrapped plugin>\n"), | ||
34 | progname); | ||
35 | printf (_(UT_HLP_VRS), progname, progname); | ||
36 | } | ||
37 | |||
38 | void | ||
39 | print_help (void) | ||
40 | { | ||
41 | print_revision (progname, revision); | ||
42 | |||
43 | printf (_(COPYRIGHT), copyright, email); | ||
44 | |||
45 | printf (_("\ | ||
46 | Negates the status of a plugin (returns OK for CRITICAL, and vice-versa).\n\ | ||
47 | \n")); | ||
48 | |||
49 | print_usage (); | ||
32 | 50 | ||
33 | #define OPTIONS "\ | 51 | printf (_(UT_HELP_VRSN)); |
34 | [-t timeout] <definition of wrapped plugin>" | ||
35 | 52 | ||
36 | #define LONGOPTIONS "\ | 53 | printf (_(UT_TIMEOUT), DEFAULT_TIMEOUT); |
37 | -t, --timeout=INTEGER\n\ | ||
38 | Terminate test if timeout limit is exceeded (default: %d)\n\ | ||
39 | [keep this less than the plugin timeout to retain CRITICAL status]\n" | ||
40 | 54 | ||
41 | #define EXAMPLES "\ | 55 | printf (_("\ |
56 | [keep timeout than the plugin timeout to retain CRITICAL status]\n")); | ||
57 | |||
58 | printf (_("\ | ||
42 | negate \"/usr/local/nagios/libexec/check_ping -H host\"\n\ | 59 | negate \"/usr/local/nagios/libexec/check_ping -H host\"\n\ |
43 | Run check_ping and invert result. Must use full path to plugin\n\ | 60 | Run check_ping and invert result. Must use full path to plugin\n\ |
44 | negate \"/usr/local/nagios/libexec/check_procs -a 'vi negate.c'\"\n\ | 61 | negate \"/usr/local/nagios/libexec/check_procs -a 'vi negate.c'\"\n\ |
45 | Use single quotes if you need to retain spaces\n" | 62 | Use single quotes if you need to retain spaces\n")); |
46 | 63 | ||
47 | #define DESCRIPTION "\ | 64 | printf (_("\ |
48 | This plugin is a wrapper to take the output of another plugin and invert it.\n\ | 65 | This plugin is a wrapper to take the output of another plugin and invert it.\n\ |
49 | If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL.\n\ | 66 | If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL.\n\ |
50 | If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK.\n\ | 67 | If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK.\n\ |
51 | Otherwise, the output state of the wrapped plugin is unchanged.\n" | 68 | Otherwise, the output state of the wrapped plugin is unchanged.\n")); |
52 | |||
53 | #define DEFAULT_TIMEOUT 9 | ||
54 | |||
55 | #include "common.h" | ||
56 | #include "utils.h" | ||
57 | #include "popen.h" | ||
58 | 69 | ||
70 | printf (_(UT_SUPPORT)); | ||
71 | } | ||
72 | |||
59 | char *command_line; | 73 | char *command_line; |
60 | 74 | ||
61 | int process_arguments (int, char **); | 75 | int process_arguments (int, char **); |
62 | int validate_arguments (void); | 76 | int validate_arguments (void); |
63 | void print_usage (void); | ||
64 | void print_help (void); | ||
65 | |||
66 | /****************************************************************************** | 77 | /****************************************************************************** |
67 | 78 | ||
68 | The (psuedo?)literate programming XML is contained within \@\@\- <XML> \-\@\@ | 79 | The (psuedo?)literate programming XML is contained within \@\@\- <XML> \-\@\@ |
@@ -123,21 +134,21 @@ main (int argc, char **argv) | |||
123 | char input_buffer[MAX_INPUT_BUFFER]; | 134 | char input_buffer[MAX_INPUT_BUFFER]; |
124 | 135 | ||
125 | if (process_arguments (argc, argv) == ERROR) | 136 | if (process_arguments (argc, argv) == ERROR) |
126 | usage ("Could not parse arguments\n"); | 137 | usage (_("Could not parse arguments\n")); |
127 | 138 | ||
128 | /* Set signal handling and alarm */ | 139 | /* Set signal handling and alarm */ |
129 | if (signal (SIGALRM, timeout_alarm_handler) == SIG_ERR) | 140 | if (signal (SIGALRM, timeout_alarm_handler) == SIG_ERR) |
130 | terminate (STATE_UNKNOWN, "Cannot catch SIGALRM"); | 141 | terminate (STATE_UNKNOWN, _("Cannot catch SIGALRM")); |
131 | 142 | ||
132 | (void) alarm ((unsigned) timeout_interval); | 143 | (void) alarm ((unsigned) timeout_interval); |
133 | 144 | ||
134 | child_process = spopen (command_line); | 145 | child_process = spopen (command_line); |
135 | if (child_process == NULL) | 146 | if (child_process == NULL) |
136 | terminate (STATE_UNKNOWN, "Could not open pipe: %s\n", command_line); | 147 | terminate (STATE_UNKNOWN, _("Could not open pipe: %s\n"), command_line); |
137 | 148 | ||
138 | child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); | 149 | child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); |
139 | if (child_stderr == NULL) { | 150 | if (child_stderr == NULL) { |
140 | printf ("Could not open stderr for %s\n", command_line); | 151 | printf (_("Could not open stderr for %s\n"), command_line); |
141 | } | 152 | } |
142 | 153 | ||
143 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { | 154 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { |
@@ -153,7 +164,7 @@ main (int argc, char **argv) | |||
153 | 164 | ||
154 | if (!found) | 165 | if (!found) |
155 | terminate (STATE_UNKNOWN,\ | 166 | terminate (STATE_UNKNOWN,\ |
156 | "%s problem - No data recieved from host\nCMD: %s\n",\ | 167 | _("%s problem - No data recieved from host\nCMD: %s\n"),\ |
157 | argv[0], command_line); | 168 | argv[0], command_line); |
158 | 169 | ||
159 | /* close the pipe */ | 170 | /* close the pipe */ |
@@ -176,32 +187,6 @@ main (int argc, char **argv) | |||
176 | 187 | ||
177 | 188 | ||
178 | 189 | ||
179 | |||
180 | void | ||
181 | print_help (void) | ||
182 | { | ||
183 | print_revision (progname, REVISION); | ||
184 | printf | ||
185 | ("Copyright (c) %s %s <%s>\n\n%s\n", | ||
186 | COPYRIGHT, AUTHOR, EMAIL, SUMMARY); | ||
187 | print_usage (); | ||
188 | printf | ||
189 | ("\nOptions:\n" LONGOPTIONS "\n" "Examples:\n" EXAMPLES "\n" | ||
190 | DESCRIPTION "\n", DEFAULT_TIMEOUT); | ||
191 | support (); | ||
192 | } | ||
193 | |||
194 | void | ||
195 | print_usage (void) | ||
196 | { | ||
197 | printf ("Usage:\n" " %s %s\n" | ||
198 | " %s (-h | --help) for detailed help\n" | ||
199 | " %s (-V | --version) for version information\n", | ||
200 | progname, OPTIONS, progname, progname); | ||
201 | } | ||
202 | |||
203 | |||
204 | |||
205 | /****************************************************************************** | 190 | /****************************************************************************** |
206 | @@- | 191 | @@- |
207 | <sect3> | 192 | <sect3> |
@@ -240,16 +225,16 @@ process_arguments (int argc, char **argv) | |||
240 | 225 | ||
241 | switch (c) { | 226 | switch (c) { |
242 | case '?': /* help */ | 227 | case '?': /* help */ |
243 | usage3 ("Unknown argument", optopt); | 228 | usage3 (_("Unknown argument"), optopt); |
244 | case 'h': /* help */ | 229 | case 'h': /* help */ |
245 | print_help (); | 230 | print_help (); |
246 | exit (EXIT_SUCCESS); | 231 | exit (EXIT_SUCCESS); |
247 | case 'V': /* version */ | 232 | case 'V': /* version */ |
248 | print_revision (progname, REVISION); | 233 | print_revision (progname, revision); |
249 | exit (EXIT_SUCCESS); | 234 | exit (EXIT_SUCCESS); |
250 | case 't': /* timeout period */ | 235 | case 't': /* timeout period */ |
251 | if (!is_integer (optarg)) | 236 | if (!is_integer (optarg)) |
252 | usage2 ("Timeout Interval must be an integer", optarg); | 237 | usage2 (_("Timeout Interval must be an integer"), optarg); |
253 | timeout_interval = atoi (optarg); | 238 | timeout_interval = atoi (optarg); |
254 | break; | 239 | break; |
255 | } | 240 | } |