diff options
Diffstat (limited to 'plugins')
34 files changed, 1090 insertions, 1060 deletions
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c index 59e8ea0c..b0aa1897 100644 --- a/plugins/check_by_ssh.c +++ b/plugins/check_by_ssh.c | |||
| @@ -169,8 +169,8 @@ process_arguments (int argc, char **argv) | |||
| 169 | int c; | 169 | int c; |
| 170 | char *p1, *p2; | 170 | char *p1, *p2; |
| 171 | 171 | ||
| 172 | int option_index = 0; | 172 | int option = 0; |
| 173 | static struct option long_options[] = { | 173 | static struct option longopts[] = { |
| 174 | {"version", no_argument, 0, 'V'}, | 174 | {"version", no_argument, 0, 'V'}, |
| 175 | {"help", no_argument, 0, 'h'}, | 175 | {"help", no_argument, 0, 'h'}, |
| 176 | {"verbose", no_argument, 0, 'v'}, | 176 | {"verbose", no_argument, 0, 'v'}, |
| @@ -200,8 +200,8 @@ process_arguments (int argc, char **argv) | |||
| 200 | strcpy (argv[c], "-t"); | 200 | strcpy (argv[c], "-t"); |
| 201 | 201 | ||
| 202 | while (1) { | 202 | while (1) { |
| 203 | c = getopt_long (argc, argv, "Vvh1246ft:H:O:p:i:u:l:C:n:s:", long_options, | 203 | c = getopt_long (argc, argv, "Vvh1246ft:H:O:p:i:u:l:C:n:s:", longopts, |
| 204 | &option_index); | 204 | &option); |
| 205 | 205 | ||
| 206 | if (c == -1 || c == EOF) | 206 | if (c == -1 || c == EOF) |
| 207 | break; | 207 | break; |
diff --git a/plugins/check_dig.c b/plugins/check_dig.c index ff160591..f376e309 100644 --- a/plugins/check_dig.c +++ b/plugins/check_dig.c | |||
| @@ -160,8 +160,8 @@ process_arguments (int argc, char **argv) | |||
| 160 | { | 160 | { |
| 161 | int c; | 161 | int c; |
| 162 | 162 | ||
| 163 | int option_index = 0; | 163 | int option = 0; |
| 164 | static struct option long_options[] = { | 164 | static struct option longopts[] = { |
| 165 | {"hostname", required_argument, 0, 'H'}, | 165 | {"hostname", required_argument, 0, 'H'}, |
| 166 | {"query_address", required_argument, 0, 'e'}, | 166 | {"query_address", required_argument, 0, 'e'}, |
| 167 | {"verbose", no_argument, 0, 'v'}, | 167 | {"verbose", no_argument, 0, 'v'}, |
| @@ -174,7 +174,7 @@ process_arguments (int argc, char **argv) | |||
| 174 | return ERROR; | 174 | return ERROR; |
| 175 | 175 | ||
| 176 | while (1) { | 176 | while (1) { |
| 177 | c = getopt_long (argc, argv, "hVvt:l:H:", long_options, &option_index); | 177 | c = getopt_long (argc, argv, "hVvt:l:H:", longopts, &option); |
| 178 | 178 | ||
| 179 | if (c == -1 || c == EOF) | 179 | if (c == -1 || c == EOF) |
| 180 | break; | 180 | break; |
| @@ -300,7 +300,7 @@ print_help (void) | |||
| 300 | 300 | ||
| 301 | printf (_(UT_VERBOSE)); | 301 | printf (_(UT_VERBOSE)); |
| 302 | 302 | ||
| 303 | support (); | 303 | printf (_(UT_SUPPORT)); |
| 304 | } | 304 | } |
| 305 | 305 | ||
| 306 | 306 | ||
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index 7974d141..c8cfecd2 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
| @@ -237,8 +237,8 @@ process_arguments (int argc, char **argv) | |||
| 237 | 237 | ||
| 238 | unsigned long l; | 238 | unsigned long l; |
| 239 | 239 | ||
| 240 | int option_index = 0; | 240 | int option = 0; |
| 241 | static struct option long_options[] = { | 241 | static struct option longopts[] = { |
| 242 | {"timeout", required_argument, 0, 't'}, | 242 | {"timeout", required_argument, 0, 't'}, |
| 243 | {"warning", required_argument, 0, 'w'}, | 243 | {"warning", required_argument, 0, 'w'}, |
| 244 | {"critical", required_argument, 0, 'c'}, | 244 | {"critical", required_argument, 0, 'c'}, |
| @@ -274,7 +274,7 @@ process_arguments (int argc, char **argv) | |||
| 274 | strcpy (argv[c], "-t"); | 274 | strcpy (argv[c], "-t"); |
| 275 | 275 | ||
| 276 | while (1) { | 276 | while (1) { |
| 277 | c = getopt_long (argc, argv, "+?VqhveCt:c:w:u:p:x:X:mklM", long_options, &option_index); | 277 | c = getopt_long (argc, argv, "+?VqhveCt:c:w:u:p:x:X:mklM", longopts, &option); |
| 278 | 278 | ||
| 279 | if (c == -1 || c == EOF) | 279 | if (c == -1 || c == EOF) |
| 280 | break; | 280 | break; |
| @@ -363,7 +363,7 @@ process_arguments (int argc, char **argv) | |||
| 363 | break; | 363 | break; |
| 364 | case 'p': /* select path */ | 364 | case 'p': /* select path */ |
| 365 | se = (struct name_list *) malloc (sizeof (struct name_list)); | 365 | se = (struct name_list *) malloc (sizeof (struct name_list)); |
| 366 | se->name = strdup (optarg); | 366 | se->name = optarg; |
| 367 | se->name_next = NULL; | 367 | se->name_next = NULL; |
| 368 | se->w_df = w_df; | 368 | se->w_df = w_df; |
| 369 | se->c_df = c_df; | 369 | se->c_df = c_df; |
| @@ -374,14 +374,14 @@ process_arguments (int argc, char **argv) | |||
| 374 | break; | 374 | break; |
| 375 | case 'x': /* exclude path or partition */ | 375 | case 'x': /* exclude path or partition */ |
| 376 | se = (struct name_list *) malloc (sizeof (struct name_list)); | 376 | se = (struct name_list *) malloc (sizeof (struct name_list)); |
| 377 | se->name = strdup (optarg); | 377 | se->name = optarg; |
| 378 | se->name_next = NULL; | 378 | se->name_next = NULL; |
| 379 | *dptail = se; | 379 | *dptail = se; |
| 380 | dptail = &se->name_next; | 380 | dptail = &se->name_next; |
| 381 | break; | 381 | break; |
| 382 | case 'X': /* exclude file system type */ | 382 | case 'X': /* exclude file system type */ |
| 383 | se = (struct name_list *) malloc (sizeof (struct name_list)); | 383 | se = (struct name_list *) malloc (sizeof (struct name_list)); |
| 384 | se->name = strdup (optarg); | 384 | se->name = optarg; |
| 385 | se->name_next = NULL; | 385 | se->name_next = NULL; |
| 386 | *fstail = se; | 386 | *fstail = se; |
| 387 | fstail = &se->name_next; | 387 | fstail = &se->name_next; |
diff --git a/plugins/check_dns.c b/plugins/check_dns.c index 8b3bb4f6..afc23a4f 100644 --- a/plugins/check_dns.c +++ b/plugins/check_dns.c | |||
| @@ -54,47 +54,11 @@ const char *revision = "$Revision$"; | |||
| 54 | const char *copyright = "2000-2003"; | 54 | const char *copyright = "2000-2003"; |
| 55 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | 55 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
| 56 | 56 | ||
| 57 | void | ||
| 58 | print_usage (void) | ||
| 59 | { | ||
| 60 | printf (_("\ | ||
| 61 | Usage: %s -H host [-s server] [-a expected-address] [-t timeout]\n\ | ||
| 62 | %s --help\n\ | ||
| 63 | %s --version\n"), | ||
| 64 | progname, progname, progname); | ||
| 65 | } | ||
| 66 | |||
| 67 | void | ||
| 68 | print_help (void) | ||
| 69 | { | ||
| 70 | print_revision (progname, revision); | ||
| 71 | |||
| 72 | printf (_(COPYRIGHT), copyright, email); | ||
| 73 | |||
| 74 | print_usage (); | ||
| 75 | |||
| 76 | printf (_(UT_HELP_VRSN)); | ||
| 77 | |||
| 78 | printf (_("\ | ||
| 79 | -H, --hostname=HOST\n\ | ||
| 80 | The name or address you want to query\n\ | ||
| 81 | -s, --server=HOST\n\ | ||
| 82 | Optional DNS server you want to use for the lookup\n\ | ||
| 83 | -a, --expected-address=IP-ADDRESS\n\ | ||
| 84 | Optional IP address you expect the DNS server to return\n")); | ||
| 85 | |||
| 86 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 87 | |||
| 88 | printf (_("\n\ | ||
| 89 | This plugin uses the nslookup program to obtain the IP address\n\ | ||
| 90 | for the given host/domain query. A optional DNS server to use may\n\ | ||
| 91 | be specified. If no DNS server is specified, the default server(s)\n\ | ||
| 92 | specified in /etc/resolv.conf will be used.\n")); | ||
| 93 | } | ||
| 94 | |||
| 95 | int process_arguments (int, char **); | 57 | int process_arguments (int, char **); |
| 96 | int validate_arguments (void); | 58 | int validate_arguments (void); |
| 97 | int error_scan (char *); | 59 | int error_scan (char *); |
| 60 | void print_help (void); | ||
| 61 | void print_usage (void); | ||
| 98 | 62 | ||
| 99 | #define ADDRESS_LENGTH 256 | 63 | #define ADDRESS_LENGTH 256 |
| 100 | char query_address[ADDRESS_LENGTH] = ""; | 64 | char query_address[ADDRESS_LENGTH] = ""; |
| @@ -421,3 +385,51 @@ validate_arguments () | |||
| 421 | else | 385 | else |
| 422 | return OK; | 386 | return OK; |
| 423 | } | 387 | } |
| 388 | |||
| 389 | |||
| 390 | |||
| 391 | |||
| 392 | |||
| 393 | |||
| 394 | void | ||
| 395 | print_help (void) | ||
| 396 | { | ||
| 397 | print_revision (progname, revision); | ||
| 398 | |||
| 399 | printf (_(COPYRIGHT), copyright, email); | ||
| 400 | |||
| 401 | print_usage (); | ||
| 402 | |||
| 403 | printf (_(UT_HELP_VRSN)); | ||
| 404 | |||
| 405 | printf (_("\ | ||
| 406 | -H, --hostname=HOST\n\ | ||
| 407 | The name or address you want to query\n\ | ||
| 408 | -s, --server=HOST\n\ | ||
| 409 | Optional DNS server you want to use for the lookup\n\ | ||
| 410 | -a, --expected-address=IP-ADDRESS\n\ | ||
| 411 | Optional IP address you expect the DNS server to return\n")); | ||
| 412 | |||
| 413 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 414 | |||
| 415 | printf (_("\n\ | ||
| 416 | This plugin uses the nslookup program to obtain the IP address\n\ | ||
| 417 | for the given host/domain query. A optional DNS server to use may\n\ | ||
| 418 | be specified. If no DNS server is specified, the default server(s)\n\ | ||
| 419 | specified in /etc/resolv.conf will be used.\n")); | ||
| 420 | |||
| 421 | printf (_(UT_SUPPORT)); | ||
| 422 | } | ||
| 423 | |||
| 424 | |||
| 425 | |||
| 426 | |||
| 427 | void | ||
| 428 | print_usage (void) | ||
| 429 | { | ||
| 430 | printf (_("\ | ||
| 431 | Usage: %s -H host [-s server] [-a expected-address] [-t timeout]\n\ | ||
| 432 | %s --help\n\ | ||
| 433 | %s --version\n"), | ||
| 434 | progname, progname, progname); | ||
| 435 | } | ||
diff --git a/plugins/check_fping.c b/plugins/check_fping.c index 7e4049c8..bb178305 100644 --- a/plugins/check_fping.c +++ b/plugins/check_fping.c | |||
| @@ -34,6 +34,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 34 | 34 | ||
| 35 | #include "common.h" | 35 | #include "common.h" |
| 36 | #include "popen.h" | 36 | #include "popen.h" |
| 37 | #include "netutils.h" | ||
| 37 | #include "utils.h" | 38 | #include "utils.h" |
| 38 | 39 | ||
| 39 | #define PACKET_COUNT 1 | 40 | #define PACKET_COUNT 1 |
| @@ -44,54 +45,11 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 44 | #define PL 0 | 45 | #define PL 0 |
| 45 | #define RTA 1 | 46 | #define RTA 1 |
| 46 | 47 | ||
| 47 | void | ||
| 48 | print_usage (void) | ||
| 49 | { | ||
| 50 | printf (_("Usage: %s <host_address>\n"), progname); | ||
| 51 | } | ||
| 52 | |||
| 53 | void | ||
| 54 | print_help (void) | ||
| 55 | { | ||
| 56 | |||
| 57 | print_revision (progname, "$Revision$"); | ||
| 58 | |||
| 59 | printf (_("\ | ||
| 60 | Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n\n\ | ||
| 61 | This plugin will use the /bin/fping command (from saint) to ping the\n\ | ||
| 62 | specified host for a fast check if the host is alive. Note that it is\n\ | ||
| 63 | necessary to set the suid flag on fping.\n\n")); | ||
| 64 | |||
| 65 | print_usage (); | ||
| 66 | |||
| 67 | printf (_(UT_HELP_VRSN)); | ||
| 68 | |||
| 69 | printf (_("\ | ||
| 70 | -H, --hostname=HOST\n\ | ||
| 71 | Name or IP Address of host to ping (IP Address bypasses name lookup,\n\ | ||
| 72 | reducing system load)\n\ | ||
| 73 | -w, --warning=THRESHOLD\n\ | ||
| 74 | warning threshold pair\n\ | ||
| 75 | -c, --critical=THRESHOLD\n\ | ||
| 76 | critical threshold pair\n\ | ||
| 77 | -b, --bytes=INTEGER\n\ | ||
| 78 | Size of ICMP packet (default: %d)\n\ | ||
| 79 | -n, --number=INTEGER\n\ | ||
| 80 | Number of ICMP packets to send (default: %d)\n"), | ||
| 81 | PACKET_SIZE, PACKET_COUNT); | ||
| 82 | |||
| 83 | printf (_(UT_VERBOSE)); | ||
| 84 | |||
| 85 | printf (_("\n\ | ||
| 86 | THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel\n\ | ||
| 87 | time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the\n\ | ||
| 88 | percentage of packet loss to trigger an alarm state.\n")); | ||
| 89 | |||
| 90 | } | ||
| 91 | |||
| 92 | int textscan (char *buf); | 48 | int textscan (char *buf); |
| 93 | int process_arguments (int, char **); | 49 | int process_arguments (int, char **); |
| 94 | int get_threshold (char *arg, char *rv[2]); | 50 | int get_threshold (char *arg, char *rv[2]); |
| 51 | void print_help (void); | ||
| 52 | void print_usage (void); | ||
| 95 | 53 | ||
| 96 | char *server_name = NULL; | 54 | char *server_name = NULL; |
| 97 | int cpl = UNKNOWN_PACKET_LOSS; | 55 | int cpl = UNKNOWN_PACKET_LOSS; |
| @@ -200,11 +158,11 @@ textscan (char *buf) | |||
| 200 | rta = strtod (rtastr, NULL); | 158 | rta = strtod (rtastr, NULL); |
| 201 | if (cpl != UNKNOWN_PACKET_LOSS && loss > cpl) | 159 | if (cpl != UNKNOWN_PACKET_LOSS && loss > cpl) |
| 202 | status = STATE_CRITICAL; | 160 | status = STATE_CRITICAL; |
| 203 | else if (crta != UNKNOWN_TRIP_TIME && rta > crta) | 161 | else if (crta <= 0 && rta > crta) |
| 204 | status = STATE_CRITICAL; | 162 | status = STATE_CRITICAL; |
| 205 | else if (wpl != UNKNOWN_PACKET_LOSS && loss > wpl) | 163 | else if (wpl != UNKNOWN_PACKET_LOSS && loss > wpl) |
| 206 | status = STATE_WARNING; | 164 | status = STATE_WARNING; |
| 207 | else if (wrta != UNKNOWN_TRIP_TIME && rta > wrta) | 165 | else if (wrta >= 0 && rta > wrta) |
| 208 | status = STATE_WARNING; | 166 | status = STATE_WARNING; |
| 209 | else | 167 | else |
| 210 | status = STATE_OK; | 168 | status = STATE_OK; |
| @@ -218,7 +176,7 @@ textscan (char *buf) | |||
| 218 | losstr = 1 + strstr (losstr, "/"); | 176 | losstr = 1 + strstr (losstr, "/"); |
| 219 | losstr = 1 + strstr (losstr, "/"); | 177 | losstr = 1 + strstr (losstr, "/"); |
| 220 | loss = strtod (losstr, NULL); | 178 | loss = strtod (losstr, NULL); |
| 221 | if (loss == 100) | 179 | if (atoi(losstr) == 100) |
| 222 | status = STATE_CRITICAL; | 180 | status = STATE_CRITICAL; |
| 223 | else if (cpl != UNKNOWN_PACKET_LOSS && loss > cpl) | 181 | else if (cpl != UNKNOWN_PACKET_LOSS && loss > cpl) |
| 224 | status = STATE_CRITICAL; | 182 | status = STATE_CRITICAL; |
| @@ -248,8 +206,8 @@ process_arguments (int argc, char **argv) | |||
| 248 | int c; | 206 | int c; |
| 249 | char *rv[2]; | 207 | char *rv[2]; |
| 250 | 208 | ||
| 251 | int option_index = 0; | 209 | int option = 0; |
| 252 | static struct option long_options[] = { | 210 | static struct option longopts[] = { |
| 253 | {"hostname", required_argument, 0, 'H'}, | 211 | {"hostname", required_argument, 0, 'H'}, |
| 254 | {"critical", required_argument, 0, 'c'}, | 212 | {"critical", required_argument, 0, 'c'}, |
| 255 | {"warning", required_argument, 0, 'w'}, | 213 | {"warning", required_argument, 0, 'w'}, |
| @@ -275,7 +233,7 @@ process_arguments (int argc, char **argv) | |||
| 275 | } | 233 | } |
| 276 | 234 | ||
| 277 | while (1) { | 235 | while (1) { |
| 278 | c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", long_options, &option_index); | 236 | c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", longopts, &option); |
| 279 | 237 | ||
| 280 | if (c == -1 || c == EOF || c == 1) | 238 | if (c == -1 || c == EOF || c == 1) |
| 281 | break; | 239 | break; |
| @@ -389,3 +347,58 @@ get_threshold (char *arg, char *rv[2]) | |||
| 389 | 347 | ||
| 390 | return OK; | 348 | return OK; |
| 391 | } | 349 | } |
| 350 | |||
| 351 | |||
| 352 | |||
| 353 | |||
| 354 | |||
| 355 | |||
| 356 | void | ||
| 357 | print_help (void) | ||
| 358 | { | ||
| 359 | |||
| 360 | print_revision (progname, "$Revision$"); | ||
| 361 | |||
| 362 | printf (_("\ | ||
| 363 | Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n\n\ | ||
| 364 | This plugin will use the /bin/fping command (from saint) to ping the\n\ | ||
| 365 | specified host for a fast check if the host is alive. Note that it is\n\ | ||
| 366 | necessary to set the suid flag on fping.\n\n")); | ||
| 367 | |||
| 368 | print_usage (); | ||
| 369 | |||
| 370 | printf (_(UT_HELP_VRSN)); | ||
| 371 | |||
| 372 | printf (_("\ | ||
| 373 | -H, --hostname=HOST\n\ | ||
| 374 | Name or IP Address of host to ping (IP Address bypasses name lookup,\n\ | ||
| 375 | reducing system load)\n\ | ||
| 376 | -w, --warning=THRESHOLD\n\ | ||
| 377 | warning threshold pair\n\ | ||
| 378 | -c, --critical=THRESHOLD\n\ | ||
| 379 | critical threshold pair\n\ | ||
| 380 | -b, --bytes=INTEGER\n\ | ||
| 381 | Size of ICMP packet (default: %d)\n\ | ||
| 382 | -n, --number=INTEGER\n\ | ||
| 383 | Number of ICMP packets to send (default: %d)\n"), | ||
| 384 | PACKET_SIZE, PACKET_COUNT); | ||
| 385 | |||
| 386 | printf (_(UT_VERBOSE)); | ||
| 387 | |||
| 388 | printf (_("\n\ | ||
| 389 | THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel\n\ | ||
| 390 | time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the\n\ | ||
| 391 | percentage of packet loss to trigger an alarm state.\n")); | ||
| 392 | |||
| 393 | printf (_(UT_SUPPORT)); | ||
| 394 | } | ||
| 395 | |||
| 396 | |||
| 397 | |||
| 398 | |||
| 399 | void | ||
| 400 | print_usage (void) | ||
| 401 | { | ||
| 402 | printf (_("Usage: %s <host_address>\n"), progname); | ||
| 403 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 404 | } | ||
diff --git a/plugins/check_game.c b/plugins/check_game.c index 2b109915..d5de13db 100644 --- a/plugins/check_game.c +++ b/plugins/check_game.c | |||
| @@ -25,48 +25,10 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 25 | #include "popen.h" | 25 | #include "popen.h" |
| 26 | #include "utils.h" | 26 | #include "utils.h" |
| 27 | 27 | ||
| 28 | void | ||
| 29 | print_usage (void) | ||
| 30 | { | ||
| 31 | printf (_("\ | ||
| 32 | Usage: %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field]\n\ | ||
| 33 | [-pf ping_field]\n"), progname); | ||
| 34 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 35 | } | ||
| 36 | |||
| 37 | void | ||
| 38 | print_help (void) | ||
| 39 | { | ||
| 40 | print_revision (progname, revision); | ||
| 41 | |||
| 42 | printf (_(COPYRIGHT), copyright, email); | ||
| 43 | |||
| 44 | printf (_("This plugin tests %s connections with the specified host."), progname); | ||
| 45 | |||
| 46 | print_usage (); | ||
| 47 | |||
| 48 | printf (_(UT_HELP_VRSN)); | ||
| 49 | |||
| 50 | printf (_("\ | ||
| 51 | <game> = Game type that is recognised by qstat (without the leading dash)\n\ | ||
| 52 | <ip_address> = The IP address of the device you wish to query\n\ | ||
| 53 | [port] = Optional port of which to connect\n\ | ||
| 54 | [game_field] = Field number in raw qstat output that contains game name\n\ | ||
| 55 | [map_field] = Field number in raw qstat output that contains map name\n\ | ||
| 56 | [ping_field] = Field number in raw qstat output that contains ping time\n"), | ||
| 57 | DEFAULT_SOCKET_TIMEOUT); | ||
| 58 | |||
| 59 | printf (_("\n\ | ||
| 60 | Notes:\n\ | ||
| 61 | - This plugin uses the 'qstat' command, the popular game server status query tool .\n\ | ||
| 62 | If you don't have the package installed, you will need to download it from\n\ | ||
| 63 | http://www.activesw.com/people/steve/qstat.html before you can use this plugin.\n")); | ||
| 64 | |||
| 65 | printf (_(UT_SUPPORT)); | ||
| 66 | } | ||
| 67 | |||
| 68 | int process_arguments (int, char **); | 28 | int process_arguments (int, char **); |
| 69 | int validate_arguments (void); | 29 | int validate_arguments (void); |
| 30 | void print_help (void); | ||
| 31 | void print_usage (void); | ||
| 70 | 32 | ||
| 71 | #define QSTAT_DATA_DELIMITER "," | 33 | #define QSTAT_DATA_DELIMITER "," |
| 72 | 34 | ||
| @@ -152,7 +114,7 @@ main (int argc, char **argv) | |||
| 152 | 114 | ||
| 153 | /* initialize the returned data buffer */ | 115 | /* initialize the returned data buffer */ |
| 154 | for (i = 0; i < QSTAT_MAX_RETURN_ARGS; i++) | 116 | for (i = 0; i < QSTAT_MAX_RETURN_ARGS; i++) |
| 155 | ret[i] = ""; | 117 | ret[i] = strdup(""); |
| 156 | 118 | ||
| 157 | i = 0; | 119 | i = 0; |
| 158 | p = (char *) strtok (input_buffer, QSTAT_DATA_DELIMITER); | 120 | p = (char *) strtok (input_buffer, QSTAT_DATA_DELIMITER); |
| @@ -253,7 +215,7 @@ process_arguments (int argc, char **argv) | |||
| 253 | case 'H': /* hostname */ | 215 | case 'H': /* hostname */ |
| 254 | if (strlen (optarg) >= MAX_HOST_ADDRESS_LENGTH) | 216 | if (strlen (optarg) >= MAX_HOST_ADDRESS_LENGTH) |
| 255 | die (STATE_UNKNOWN, _("Input buffer overflow\n")); | 217 | die (STATE_UNKNOWN, _("Input buffer overflow\n")); |
| 256 | server_ip = strdup (optarg); | 218 | server_ip = optarg; |
| 257 | break; | 219 | break; |
| 258 | case 'P': /* port */ | 220 | case 'P': /* port */ |
| 259 | port = atoi (optarg); | 221 | port = atoi (optarg); |
| @@ -261,7 +223,7 @@ process_arguments (int argc, char **argv) | |||
| 261 | case 'G': /* hostname */ | 223 | case 'G': /* hostname */ |
| 262 | if (strlen (optarg) >= MAX_INPUT_BUFFER) | 224 | if (strlen (optarg) >= MAX_INPUT_BUFFER) |
| 263 | die (STATE_UNKNOWN, _("Input buffer overflow\n")); | 225 | die (STATE_UNKNOWN, _("Input buffer overflow\n")); |
| 264 | game_type = strdup (optarg); | 226 | game_type = optarg; |
| 265 | break; | 227 | break; |
| 266 | case 'p': /* index of ping field */ | 228 | case 'p': /* index of ping field */ |
| 267 | qstat_ping_field = atoi (optarg); | 229 | qstat_ping_field = atoi (optarg); |
| @@ -308,3 +270,52 @@ validate_arguments (void) | |||
| 308 | { | 270 | { |
| 309 | return OK; | 271 | return OK; |
| 310 | } | 272 | } |
| 273 | |||
| 274 | |||
| 275 | |||
| 276 | |||
| 277 | |||
| 278 | |||
| 279 | void | ||
| 280 | print_help (void) | ||
| 281 | { | ||
| 282 | print_revision (progname, revision); | ||
| 283 | |||
| 284 | printf (_(COPYRIGHT), copyright, email); | ||
| 285 | |||
| 286 | printf (_("This plugin tests %s connections with the specified host."), progname); | ||
| 287 | |||
| 288 | print_usage (); | ||
| 289 | |||
| 290 | printf (_(UT_HELP_VRSN)); | ||
| 291 | |||
| 292 | printf (_("\ | ||
| 293 | <game> = Game type that is recognised by qstat (without the leading dash)\n\ | ||
| 294 | <ip_address> = The IP address of the device you wish to query\n\ | ||
| 295 | [port] = Optional port of which to connect\n\ | ||
| 296 | [game_field] = Field number in raw qstat output that contains game name\n\ | ||
| 297 | [map_field] = Field number in raw qstat output that contains map name\n\ | ||
| 298 | [ping_field] = Field number in raw qstat output that contains ping time\n")); | ||
| 299 | |||
| 300 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 301 | |||
| 302 | printf (_("\n\ | ||
| 303 | Notes:\n\ | ||
| 304 | - This plugin uses the 'qstat' command, the popular game server status query tool .\n\ | ||
| 305 | If you don't have the package installed, you will need to download it from\n\ | ||
| 306 | http://www.activesw.com/people/steve/qstat.html before you can use this plugin.\n")); | ||
| 307 | |||
| 308 | printf (_(UT_SUPPORT)); | ||
| 309 | } | ||
| 310 | |||
| 311 | |||
| 312 | |||
| 313 | |||
| 314 | void | ||
| 315 | print_usage (void) | ||
| 316 | { | ||
| 317 | printf (_("\ | ||
| 318 | Usage: %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field]\n\ | ||
| 319 | [-pf ping_field]\n"), progname); | ||
| 320 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 321 | } | ||
diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c index cb93a36e..edde341e 100644 --- a/plugins/check_hpjd.c +++ b/plugins/check_hpjd.c | |||
| @@ -29,36 +29,7 @@ const char *copyright = "2000-2003"; | |||
| 29 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | 29 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
| 30 | 30 | ||
| 31 | const char *option_summary = "-H host [-C community]\n"; | 31 | const char *option_summary = "-H host [-C community]\n"; |
| 32 | void | ||
| 33 | print_usage (void) | ||
| 34 | { | ||
| 35 | printf (_("\ | ||
| 36 | Usage: %s -H host [-C community]\n"), progname); | ||
| 37 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 38 | } | ||
| 39 | 32 | ||
| 40 | void | ||
| 41 | print_help (void) | ||
| 42 | { | ||
| 43 | print_revision (progname, revision); | ||
| 44 | |||
| 45 | printf (_(COPYRIGHT), copyright, email); | ||
| 46 | |||
| 47 | printf (_("\ | ||
| 48 | This plugin tests the STATUS of an HP printer with a JetDirect card.\n\ | ||
| 49 | Net-snmp must be installed on the computer running the plugin.\n\n")); | ||
| 50 | |||
| 51 | print_usage (); | ||
| 52 | |||
| 53 | printf (_(UT_HELP_VRSN)); | ||
| 54 | |||
| 55 | printf (_("\ | ||
| 56 | -C, --community=STRING\n\ | ||
| 57 | The SNMP community name (default=%s)\n"), DEFAULT_COMMUNITY); | ||
| 58 | |||
| 59 | printf (_(UT_SUPPORT)); | ||
| 60 | } | ||
| 61 | |||
| 62 | #define HPJD_LINE_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.1" | 33 | #define HPJD_LINE_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.1" |
| 63 | #define HPJD_PAPER_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.2" | 34 | #define HPJD_PAPER_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.2" |
| 64 | #define HPJD_INTERVENTION_REQUIRED ".1.3.6.1.4.1.11.2.3.9.1.1.2.3" | 35 | #define HPJD_INTERVENTION_REQUIRED ".1.3.6.1.4.1.11.2.3.9.1.1.2.3" |
| @@ -77,8 +48,10 @@ Net-snmp must be installed on the computer running the plugin.\n\n")); | |||
| 77 | 48 | ||
| 78 | int process_arguments (int, char **); | 49 | int process_arguments (int, char **); |
| 79 | int validate_arguments (void); | 50 | int validate_arguments (void); |
| 51 | void print_help (void); | ||
| 52 | void print_usage (void); | ||
| 80 | 53 | ||
| 81 | char *community = DEFAULT_COMMUNITY; | 54 | char *community = NULL; |
| 82 | char *address = NULL; | 55 | char *address = NULL; |
| 83 | 56 | ||
| 84 | int | 57 | int |
| @@ -89,7 +62,7 @@ main (int argc, char **argv) | |||
| 89 | int line; | 62 | int line; |
| 90 | char input_buffer[MAX_INPUT_BUFFER]; | 63 | char input_buffer[MAX_INPUT_BUFFER]; |
| 91 | char query_string[512]; | 64 | char query_string[512]; |
| 92 | char error_message[MAX_INPUT_BUFFER]; | 65 | char *errmsg; |
| 93 | char *temp_buffer; | 66 | char *temp_buffer; |
| 94 | int line_status = ONLINE; | 67 | int line_status = ONLINE; |
| 95 | int paper_status = 0; | 68 | int paper_status = 0; |
| @@ -103,7 +76,8 @@ main (int argc, char **argv) | |||
| 103 | int door_open = 0; | 76 | int door_open = 0; |
| 104 | int paper_output = 0; | 77 | int paper_output = 0; |
| 105 | char display_message[MAX_INPUT_BUFFER]; | 78 | char display_message[MAX_INPUT_BUFFER]; |
| 106 | char *temp ; | 79 | |
| 80 | errmsg = malloc(MAX_INPUT_BUFFER); | ||
| 107 | 81 | ||
| 108 | if (process_arguments (argc, argv) != OK) | 82 | if (process_arguments (argc, argv) != OK) |
| 109 | usage (_("Invalid command arguments supplied\n")); | 83 | usage (_("Invalid command arguments supplied\n")); |
| @@ -154,118 +128,55 @@ main (int argc, char **argv) | |||
| 154 | temp_buffer = strtok (input_buffer, "="); | 128 | temp_buffer = strtok (input_buffer, "="); |
| 155 | temp_buffer = strtok (NULL, "="); | 129 | temp_buffer = strtok (NULL, "="); |
| 156 | 130 | ||
| 157 | switch (line) { | 131 | if (temp_buffer != NULL) { |
| 158 | 132 | ||
| 159 | case 1: /* 1st line should contain the line status */ | ||
| 160 | if (temp_buffer != NULL) | ||
| 161 | line_status = atoi (temp_buffer); | ||
| 162 | else { | ||
| 163 | result = STATE_UNKNOWN; | 133 | result = STATE_UNKNOWN; |
| 164 | strcpy (error_message, input_buffer); | 134 | strcpy (errmsg, input_buffer); |
| 165 | } | ||
| 166 | break; | ||
| 167 | 135 | ||
| 168 | case 2: /* 2nd line should contain the paper status */ | 136 | } else { |
| 169 | if (temp_buffer != NULL) | ||
| 170 | paper_status = atoi (temp_buffer); | ||
| 171 | else { | ||
| 172 | result = STATE_UNKNOWN; | ||
| 173 | strcpy (error_message, input_buffer); | ||
| 174 | } | ||
| 175 | break; | ||
| 176 | 137 | ||
| 177 | case 3: /* 3rd line should be intervention required */ | 138 | switch (line) { |
| 178 | if (temp_buffer != NULL) | ||
| 179 | intervention_required = atoi (temp_buffer); | ||
| 180 | else { | ||
| 181 | result = STATE_UNKNOWN; | ||
| 182 | strcpy (error_message, input_buffer); | ||
| 183 | } | ||
| 184 | break; | ||
| 185 | 139 | ||
| 186 | case 4: /* 4th line should be peripheral error */ | 140 | case 1: /* 1st line should contain the line status */ |
| 187 | if (temp_buffer != NULL) | 141 | line_status = atoi (temp_buffer); |
| 142 | break; | ||
| 143 | case 2: /* 2nd line should contain the paper status */ | ||
| 144 | paper_status = atoi (temp_buffer); | ||
| 145 | break; | ||
| 146 | case 3: /* 3rd line should be intervention required */ | ||
| 147 | intervention_required = atoi (temp_buffer); | ||
| 148 | break; | ||
| 149 | case 4: /* 4th line should be peripheral error */ | ||
| 188 | peripheral_error = atoi (temp_buffer); | 150 | peripheral_error = atoi (temp_buffer); |
| 189 | else { | 151 | break; |
| 190 | result = STATE_UNKNOWN; | 152 | case 5: /* 5th line should contain the paper jam status */ |
| 191 | strcpy (error_message, input_buffer); | ||
| 192 | } | ||
| 193 | break; | ||
| 194 | |||
| 195 | case 5: /* 5th line should contain the paper jam status */ | ||
| 196 | if (temp_buffer != NULL) | ||
| 197 | paper_jam = atoi (temp_buffer); | 153 | paper_jam = atoi (temp_buffer); |
| 198 | else { | 154 | break; |
| 199 | result = STATE_UNKNOWN; | 155 | case 6: /* 6th line should contain the paper out status */ |
| 200 | strcpy (error_message, input_buffer); | ||
| 201 | } | ||
| 202 | break; | ||
| 203 | |||
| 204 | case 6: /* 6th line should contain the paper out status */ | ||
| 205 | if (temp_buffer != NULL) | ||
| 206 | paper_out = atoi (temp_buffer); | 156 | paper_out = atoi (temp_buffer); |
| 207 | else { | 157 | break; |
| 208 | result = STATE_UNKNOWN; | 158 | case 7: /* 7th line should contain the toner low status */ |
| 209 | strcpy (error_message, input_buffer); | ||
| 210 | } | ||
| 211 | break; | ||
| 212 | |||
| 213 | case 7: /* 7th line should contain the toner low status */ | ||
| 214 | if (temp_buffer != NULL) | ||
| 215 | toner_low = atoi (temp_buffer); | 159 | toner_low = atoi (temp_buffer); |
| 216 | else { | 160 | break; |
| 217 | result = STATE_UNKNOWN; | 161 | case 8: /* did data come too slow for engine */ |
| 218 | strcpy (error_message, input_buffer); | ||
| 219 | } | ||
| 220 | break; | ||
| 221 | |||
| 222 | case 8: /* did data come too slow for engine */ | ||
| 223 | if (temp_buffer != NULL) | ||
| 224 | page_punt = atoi (temp_buffer); | 162 | page_punt = atoi (temp_buffer); |
| 225 | else { | 163 | break; |
| 226 | result = STATE_UNKNOWN; | 164 | case 9: /* did we run out of memory */ |
| 227 | strcpy (error_message, input_buffer); | ||
| 228 | } | ||
| 229 | break; | ||
| 230 | |||
| 231 | case 9: /* did we run out of memory */ | ||
| 232 | if (temp_buffer != NULL) | ||
| 233 | memory_out = atoi (temp_buffer); | 165 | memory_out = atoi (temp_buffer); |
| 234 | else { | 166 | break; |
| 235 | result = STATE_UNKNOWN; | 167 | case 10: /* is there a door open */ |
| 236 | strcpy (error_message, input_buffer); | ||
| 237 | } | ||
| 238 | break; | ||
| 239 | |||
| 240 | case 10: /* is there a door open */ | ||
| 241 | if (temp_buffer != NULL) | ||
| 242 | door_open = atoi (temp_buffer); | 168 | door_open = atoi (temp_buffer); |
| 243 | else { | 169 | break; |
| 244 | result = STATE_UNKNOWN; | 170 | case 11: /* is output tray full */ |
| 245 | strcpy (error_message, input_buffer); | ||
| 246 | } | ||
| 247 | break; | ||
| 248 | |||
| 249 | case 11: /* is output tray full */ | ||
| 250 | if (temp_buffer != NULL) | ||
| 251 | paper_output = atoi (temp_buffer); | 171 | paper_output = atoi (temp_buffer); |
| 252 | else { | 172 | break; |
| 253 | result = STATE_UNKNOWN; | 173 | case 12: /* display panel message */ |
| 254 | strcpy (error_message, input_buffer); | ||
| 255 | } | ||
| 256 | break; | ||
| 257 | |||
| 258 | case 12: /* display panel message */ | ||
| 259 | if (temp_buffer != NULL) | ||
| 260 | strcpy (display_message, temp_buffer + 1); | 174 | strcpy (display_message, temp_buffer + 1); |
| 261 | else { | 175 | break; |
| 262 | result = STATE_UNKNOWN; | 176 | default: |
| 263 | strcpy (error_message, input_buffer); | 177 | break; |
| 264 | } | 178 | } |
| 265 | break; | ||
| 266 | 179 | ||
| 267 | default: | ||
| 268 | break; | ||
| 269 | } | 180 | } |
| 270 | 181 | ||
| 271 | /* break out of the read loop if we encounter an error */ | 182 | /* break out of the read loop if we encounter an error */ |
| @@ -279,7 +190,7 @@ main (int argc, char **argv) | |||
| 279 | /* remove CRLF */ | 190 | /* remove CRLF */ |
| 280 | if (input_buffer[strlen (input_buffer) - 1] == '\n') | 191 | if (input_buffer[strlen (input_buffer) - 1] == '\n') |
| 281 | input_buffer[strlen (input_buffer) - 1] = 0; | 192 | input_buffer[strlen (input_buffer) - 1] = 0; |
| 282 | sprintf (error_message, "%s", input_buffer ); | 193 | sprintf (errmsg, "%s", input_buffer ); |
| 283 | 194 | ||
| 284 | } | 195 | } |
| 285 | 196 | ||
| @@ -295,8 +206,7 @@ main (int argc, char **argv) | |||
| 295 | 206 | ||
| 296 | /* might not be the problem, but most likely is. */ | 207 | /* might not be the problem, but most likely is. */ |
| 297 | result = STATE_UNKNOWN ; | 208 | result = STATE_UNKNOWN ; |
| 298 | asprintf (&temp, error_message); | 209 | asprintf (&errmsg, "%s : Timeout from host %s\n", errmsg, address ); |
| 299 | sprintf (error_message, "%s : Timeout from host %s\n", temp, address ); | ||
| 300 | 210 | ||
| 301 | } | 211 | } |
| 302 | 212 | ||
| @@ -305,49 +215,49 @@ main (int argc, char **argv) | |||
| 305 | 215 | ||
| 306 | if (paper_jam) { | 216 | if (paper_jam) { |
| 307 | result = STATE_WARNING; | 217 | result = STATE_WARNING; |
| 308 | strcpy (error_message, _("Paper Jam")); | 218 | strcpy (errmsg, _("Paper Jam")); |
| 309 | } | 219 | } |
| 310 | else if (paper_out) { | 220 | else if (paper_out) { |
| 311 | result = STATE_WARNING; | 221 | result = STATE_WARNING; |
| 312 | strcpy (error_message, _("Out of Paper")); | 222 | strcpy (errmsg, _("Out of Paper")); |
| 313 | } | 223 | } |
| 314 | else if (line_status == OFFLINE) { | 224 | else if (line_status == OFFLINE) { |
| 315 | if (strcmp (error_message, "POWERSAVE ON") != 0) { | 225 | if (strcmp (errmsg, "POWERSAVE ON") != 0) { |
| 316 | result = STATE_WARNING; | 226 | result = STATE_WARNING; |
| 317 | strcpy (error_message, _("Printer Offline")); | 227 | strcpy (errmsg, _("Printer Offline")); |
| 318 | } | 228 | } |
| 319 | } | 229 | } |
| 320 | else if (peripheral_error) { | 230 | else if (peripheral_error) { |
| 321 | result = STATE_WARNING; | 231 | result = STATE_WARNING; |
| 322 | strcpy (error_message, _("Peripheral Error")); | 232 | strcpy (errmsg, _("Peripheral Error")); |
| 323 | } | 233 | } |
| 324 | else if (intervention_required) { | 234 | else if (intervention_required) { |
| 325 | result = STATE_WARNING; | 235 | result = STATE_WARNING; |
| 326 | strcpy (error_message, _("Intervention Required")); | 236 | strcpy (errmsg, _("Intervention Required")); |
| 327 | } | 237 | } |
| 328 | else if (toner_low) { | 238 | else if (toner_low) { |
| 329 | result = STATE_WARNING; | 239 | result = STATE_WARNING; |
| 330 | strcpy (error_message, _("Toner Low")); | 240 | strcpy (errmsg, _("Toner Low")); |
| 331 | } | 241 | } |
| 332 | else if (memory_out) { | 242 | else if (memory_out) { |
| 333 | result = STATE_WARNING; | 243 | result = STATE_WARNING; |
| 334 | strcpy (error_message, _("Insufficient Memory")); | 244 | strcpy (errmsg, _("Insufficient Memory")); |
| 335 | } | 245 | } |
| 336 | else if (door_open) { | 246 | else if (door_open) { |
| 337 | result = STATE_WARNING; | 247 | result = STATE_WARNING; |
| 338 | strcpy (error_message, _("A Door is Open")); | 248 | strcpy (errmsg, _("A Door is Open")); |
| 339 | } | 249 | } |
| 340 | else if (paper_output) { | 250 | else if (paper_output) { |
| 341 | result = STATE_WARNING; | 251 | result = STATE_WARNING; |
| 342 | strcpy (error_message, _("Output Tray is Full")); | 252 | strcpy (errmsg, _("Output Tray is Full")); |
| 343 | } | 253 | } |
| 344 | else if (page_punt) { | 254 | else if (page_punt) { |
| 345 | result = STATE_WARNING; | 255 | result = STATE_WARNING; |
| 346 | strcpy (error_message, _("Data too Slow for Engine")); | 256 | strcpy (errmsg, _("Data too Slow for Engine")); |
| 347 | } | 257 | } |
| 348 | else if (paper_status) { | 258 | else if (paper_status) { |
| 349 | result = STATE_WARNING; | 259 | result = STATE_WARNING; |
| 350 | strcpy (error_message, _("Unknown Paper Error")); | 260 | strcpy (errmsg, _("Unknown Paper Error")); |
| 351 | } | 261 | } |
| 352 | } | 262 | } |
| 353 | 263 | ||
| @@ -356,15 +266,15 @@ main (int argc, char **argv) | |||
| 356 | 266 | ||
| 357 | else if (result == STATE_UNKNOWN) { | 267 | else if (result == STATE_UNKNOWN) { |
| 358 | 268 | ||
| 359 | printf ("%s\n", error_message); | 269 | printf ("%s\n", errmsg); |
| 360 | 270 | ||
| 361 | /* if printer could not be reached, escalate to critical */ | 271 | /* if printer could not be reached, escalate to critical */ |
| 362 | if (strstr (error_message, "Timeout")) | 272 | if (strstr (errmsg, "Timeout")) |
| 363 | result = STATE_CRITICAL; | 273 | result = STATE_CRITICAL; |
| 364 | } | 274 | } |
| 365 | 275 | ||
| 366 | else if (result == STATE_WARNING) | 276 | else if (result == STATE_WARNING) |
| 367 | printf ("%s (%s)\n", error_message, display_message); | 277 | printf ("%s (%s)\n", errmsg, display_message); |
| 368 | 278 | ||
| 369 | return result; | 279 | return result; |
| 370 | } | 280 | } |
| @@ -379,8 +289,8 @@ process_arguments (int argc, char **argv) | |||
| 379 | { | 289 | { |
| 380 | int c; | 290 | int c; |
| 381 | 291 | ||
| 382 | int option_index = 0; | 292 | int option = 0; |
| 383 | static struct option long_options[] = { | 293 | static struct option longopts[] = { |
| 384 | {"hostname", required_argument, 0, 'H'}, | 294 | {"hostname", required_argument, 0, 'H'}, |
| 385 | {"community", required_argument, 0, 'C'}, | 295 | {"community", required_argument, 0, 'C'}, |
| 386 | /* {"critical", required_argument,0,'c'}, */ | 296 | /* {"critical", required_argument,0,'c'}, */ |
| @@ -396,7 +306,7 @@ process_arguments (int argc, char **argv) | |||
| 396 | 306 | ||
| 397 | 307 | ||
| 398 | while (1) { | 308 | while (1) { |
| 399 | c = getopt_long (argc, argv, "+hVH:C:", long_options, &option_index); | 309 | c = getopt_long (argc, argv, "+hVH:C:", longopts, &option); |
| 400 | 310 | ||
| 401 | if (c == -1 || c == EOF || c == 1) | 311 | if (c == -1 || c == EOF || c == 1) |
| 402 | break; | 312 | break; |
| @@ -434,8 +344,11 @@ process_arguments (int argc, char **argv) | |||
| 434 | } | 344 | } |
| 435 | } | 345 | } |
| 436 | 346 | ||
| 437 | if (argv[c] != NULL ) { | 347 | if (community == NULL) { |
| 438 | community = argv[c]; | 348 | if (argv[c] != NULL ) |
| 349 | community = argv[c]; | ||
| 350 | else | ||
| 351 | community = strdup (DEFAULT_COMMUNITY); | ||
| 439 | } | 352 | } |
| 440 | 353 | ||
| 441 | return validate_arguments (); | 354 | return validate_arguments (); |
| @@ -450,3 +363,41 @@ validate_arguments (void) | |||
| 450 | { | 363 | { |
| 451 | return OK; | 364 | return OK; |
| 452 | } | 365 | } |
| 366 | |||
| 367 | |||
| 368 | |||
| 369 | |||
| 370 | |||
| 371 | |||
| 372 | void | ||
| 373 | print_help (void) | ||
| 374 | { | ||
| 375 | print_revision (progname, revision); | ||
| 376 | |||
| 377 | printf (_(COPYRIGHT), copyright, email); | ||
| 378 | |||
| 379 | printf (_("\ | ||
| 380 | This plugin tests the STATUS of an HP printer with a JetDirect card.\n\ | ||
| 381 | Net-snmp must be installed on the computer running the plugin.\n\n")); | ||
| 382 | |||
| 383 | print_usage (); | ||
| 384 | |||
| 385 | printf (_(UT_HELP_VRSN)); | ||
| 386 | |||
| 387 | printf (_("\ | ||
| 388 | -C, --community=STRING\n\ | ||
| 389 | The SNMP community name (default=%s)\n"), DEFAULT_COMMUNITY); | ||
| 390 | |||
| 391 | printf (_(UT_SUPPORT)); | ||
| 392 | } | ||
| 393 | |||
| 394 | |||
| 395 | |||
| 396 | |||
| 397 | void | ||
| 398 | print_usage (void) | ||
| 399 | { | ||
| 400 | printf (_("\ | ||
| 401 | Usage: %s -H host [-C community]\n"), progname); | ||
| 402 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 403 | } | ||
diff --git a/plugins/check_http.c b/plugins/check_http.c index 3321d5ac..27127d6a 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c | |||
| @@ -184,8 +184,8 @@ process_arguments (int argc, char **argv) | |||
| 184 | { | 184 | { |
| 185 | int c = 1; | 185 | int c = 1; |
| 186 | 186 | ||
| 187 | int option_index = 0; | 187 | int option = 0; |
| 188 | static struct option long_options[] = { | 188 | static struct option longopts[] = { |
| 189 | STD_LONG_OPTS, | 189 | STD_LONG_OPTS, |
| 190 | {"file",required_argument,0,'F'}, | 190 | {"file",required_argument,0,'F'}, |
| 191 | {"link", no_argument, 0, 'L'}, | 191 | {"link", no_argument, 0, 'L'}, |
| @@ -224,7 +224,7 @@ process_arguments (int argc, char **argv) | |||
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | while (1) { | 226 | while (1) { |
| 227 | c = getopt_long (argc, argv, "Vvh46t:c:w:H:P:I:a:e:p:s:R:r:u:f:C:nlLSm:", long_options, &option_index); | 227 | c = getopt_long (argc, argv, "Vvh46t:c:w:H:P:I:a:e:p:s:R:r:u:f:C:nlLSm:", longopts, &option); |
| 228 | if (c == -1 || c == EOF) | 228 | if (c == -1 || c == EOF) |
| 229 | break; | 229 | break; |
| 230 | 230 | ||
| @@ -304,10 +304,10 @@ process_arguments (int argc, char **argv) | |||
| 304 | break; | 304 | break; |
| 305 | /* Note: H, I, and u must be malloc'd or will fail on redirects */ | 305 | /* Note: H, I, and u must be malloc'd or will fail on redirects */ |
| 306 | case 'H': /* Host Name (virtual host) */ | 306 | case 'H': /* Host Name (virtual host) */ |
| 307 | host_name = strdup (optarg); | 307 | host_name = optarg; |
| 308 | break; | 308 | break; |
| 309 | case 'I': /* Server IP-address */ | 309 | case 'I': /* Server IP-address */ |
| 310 | server_address = strdup(optarg); | 310 | server_address = optarg; |
| 311 | break; | 311 | break; |
| 312 | case 'u': /* URL path */ | 312 | case 'u': /* URL path */ |
| 313 | asprintf (&server_url, "%s", optarg); | 313 | asprintf (&server_url, "%s", optarg); |
| @@ -328,7 +328,7 @@ process_arguments (int argc, char **argv) | |||
| 328 | case 'P': /* HTTP POST data in URL encoded format */ | 328 | case 'P': /* HTTP POST data in URL encoded format */ |
| 329 | if (http_method || http_post_data) break; | 329 | if (http_method || http_post_data) break; |
| 330 | http_method = strdup("POST"); | 330 | http_method = strdup("POST"); |
| 331 | http_post_data = strdup(optarg); | 331 | http_post_data = optarg; |
| 332 | break; | 332 | break; |
| 333 | case 's': /* string or substring */ | 333 | case 's': /* string or substring */ |
| 334 | strncpy (string_expect, optarg, MAX_INPUT_BUFFER - 1); | 334 | strncpy (string_expect, optarg, MAX_INPUT_BUFFER - 1); |
diff --git a/plugins/check_ldap.c b/plugins/check_ldap.c index 2064dd3b..d2c6ae22 100644 --- a/plugins/check_ldap.c +++ b/plugins/check_ldap.c | |||
| @@ -36,75 +36,18 @@ enum { | |||
| 36 | DEFAULT_PORT = 389 | 36 | DEFAULT_PORT = 389 |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| 39 | void | ||
| 40 | print_usage () | ||
| 41 | { | ||
| 42 | printf (_("\ | ||
| 43 | Usage: %s -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]\n\ | ||
| 44 | [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]%s\n\ | ||
| 45 | (Note: all times are in seconds.)\n"), | ||
| 46 | progname, (HAVE_LDAP_SET_OPTION ? "[-2|-3] [-4|-6]" : "")); | ||
| 47 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 48 | } | ||
| 49 | |||
| 50 | void | ||
| 51 | print_help () | ||
| 52 | { | ||
| 53 | char *myport; | ||
| 54 | asprintf (&myport, "%d", DEFAULT_PORT); | ||
| 55 | |||
| 56 | print_revision (progname, revision); | ||
| 57 | |||
| 58 | printf (_("Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n")); | ||
| 59 | printf (_(COPYRIGHT), copyright, email); | ||
| 60 | |||
| 61 | print_usage (); | ||
| 62 | |||
| 63 | printf (_(UT_HELP_VRSN)); | ||
| 64 | |||
| 65 | printf (_(UT_HOST_PORT), 'p', myport); | ||
| 66 | |||
| 67 | printf (_(UT_IPv46)); | ||
| 68 | |||
| 69 | printf (_("\ | ||
| 70 | -a [--attr]\n\ | ||
| 71 | ldap attribute to search (default: \"(objectclass=*)\"\n\ | ||
| 72 | -b [--base]\n\ | ||
| 73 | ldap base (eg. ou=my unit, o=my org, c=at)\n\ | ||
| 74 | -D [--bind]\n\ | ||
| 75 | ldap bind DN (if required)\n\ | ||
| 76 | -P [--pass]\n\ | ||
| 77 | ldap password (if required)\n")); | ||
| 78 | |||
| 79 | #ifdef HAVE_LDAP_SET_OPTION | ||
| 80 | printf (_("\ | ||
| 81 | -2 [--ver2]\n\ | ||
| 82 | use ldap protocol version 2\n\ | ||
| 83 | -3 [--ver3]\n\ | ||
| 84 | use ldap protocol version 3\n\ | ||
| 85 | (default protocol version: %d)\n"), | ||
| 86 | DEFAULT_PROTOCOL); | ||
| 87 | #endif | ||
| 88 | |||
| 89 | printf (_(UT_WARN_CRIT)); | ||
| 90 | |||
| 91 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 92 | |||
| 93 | printf (_(UT_VERBOSE)); | ||
| 94 | |||
| 95 | printf (_(UT_SUPPORT)); | ||
| 96 | } | ||
| 97 | |||
| 98 | int process_arguments (int, char **); | 39 | int process_arguments (int, char **); |
| 99 | int validate_arguments (void); | 40 | int validate_arguments (void); |
| 41 | void print_help (void); | ||
| 42 | void print_usage (void); | ||
| 100 | 43 | ||
| 101 | char ld_defattr[] = "(objectclass=*)"; | 44 | char ld_defattr[] = "(objectclass=*)"; |
| 102 | char *ld_attr = ld_defattr; | 45 | char *ld_attr = ld_defattr; |
| 103 | char *ld_host = ""; | 46 | char *ld_host = NULL; |
| 104 | char *ld_base = ""; | 47 | char *ld_base = NULL; |
| 105 | char *ld_passwd = NULL; | 48 | char *ld_passwd = NULL; |
| 106 | char *ld_binddn = NULL; | 49 | char *ld_binddn = NULL; |
| 107 | unsigned int ld_port = DEFAULT_PORT; | 50 | int ld_port = DEFAULT_PORT; |
| 108 | #ifdef HAVE_LDAP_SET_OPTION | 51 | #ifdef HAVE_LDAP_SET_OPTION |
| 109 | int ld_protocol = DEFAULT_PROTOCOL; | 52 | int ld_protocol = DEFAULT_PROTOCOL; |
| 110 | #endif | 53 | #endif |
| @@ -198,7 +141,7 @@ process_arguments (int argc, char **argv) | |||
| 198 | { | 141 | { |
| 199 | int c; | 142 | int c; |
| 200 | 143 | ||
| 201 | int option_index = 0; | 144 | int option = 0; |
| 202 | /* initialize the long option struct */ | 145 | /* initialize the long option struct */ |
| 203 | static struct option longopts[] = { | 146 | static struct option longopts[] = { |
| 204 | {"help", no_argument, 0, 'h'}, | 147 | {"help", no_argument, 0, 'h'}, |
| @@ -230,7 +173,7 @@ process_arguments (int argc, char **argv) | |||
| 230 | } | 173 | } |
| 231 | 174 | ||
| 232 | while (1) { | 175 | while (1) { |
| 233 | c = getopt_long (argc, argv, "hV2346t:c:w:H:b:p:a:D:P:", longopts, &option_index); | 176 | c = getopt_long (argc, argv, "hV2346t:c:w:H:b:p:a:D:P:", longopts, &option); |
| 234 | 177 | ||
| 235 | if (c == -1 || c == EOF) | 178 | if (c == -1 || c == EOF) |
| 236 | break; | 179 | break; |
| @@ -245,7 +188,8 @@ process_arguments (int argc, char **argv) | |||
| 245 | case 't': /* timeout period */ | 188 | case 't': /* timeout period */ |
| 246 | if (!is_intnonneg (optarg)) | 189 | if (!is_intnonneg (optarg)) |
| 247 | usage2 (_("timeout interval must be a positive integer"), optarg); | 190 | usage2 (_("timeout interval must be a positive integer"), optarg); |
| 248 | socket_timeout = atoi (optarg); | 191 | else |
| 192 | socket_timeout = atoi (optarg); | ||
| 249 | break; | 193 | break; |
| 250 | case 'H': | 194 | case 'H': |
| 251 | ld_host = optarg; | 195 | ld_host = optarg; |
| @@ -296,12 +240,11 @@ process_arguments (int argc, char **argv) | |||
| 296 | } | 240 | } |
| 297 | 241 | ||
| 298 | c = optind; | 242 | c = optind; |
| 299 | if (strlen(ld_host) == 0 && is_host(argv[c])) { | 243 | if (ld_host == NULL && is_host(argv[c])) |
| 300 | asprintf (&ld_host, "%s", argv[c++]); | 244 | ld_host = strdup (argv[c++]); |
| 301 | } | 245 | |
| 302 | if (strlen(ld_base) == 0 && argv[c]) { | 246 | if (ld_base == NULL && argv[c]) |
| 303 | asprintf (&ld_base, "%s", argv[c++]); | 247 | ld_base = strdup (argv[c++]); |
| 304 | } | ||
| 305 | 248 | ||
| 306 | return validate_arguments (); | 249 | return validate_arguments (); |
| 307 | } | 250 | } |
| @@ -318,3 +261,70 @@ validate_arguments () | |||
| 318 | return OK; | 261 | return OK; |
| 319 | 262 | ||
| 320 | } | 263 | } |
| 264 | |||
| 265 | |||
| 266 | |||
| 267 | |||
| 268 | |||
| 269 | |||
| 270 | void | ||
| 271 | print_help (void) | ||
| 272 | { | ||
| 273 | char *myport; | ||
| 274 | asprintf (&myport, "%d", DEFAULT_PORT); | ||
| 275 | |||
| 276 | print_revision (progname, revision); | ||
| 277 | |||
| 278 | printf (_("Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n")); | ||
| 279 | printf (_(COPYRIGHT), copyright, email); | ||
| 280 | |||
| 281 | print_usage (); | ||
| 282 | |||
| 283 | printf (_(UT_HELP_VRSN)); | ||
| 284 | |||
| 285 | printf (_(UT_HOST_PORT), 'p', myport); | ||
| 286 | |||
| 287 | printf (_(UT_IPv46)); | ||
| 288 | |||
| 289 | printf (_("\ | ||
| 290 | -a [--attr]\n\ | ||
| 291 | ldap attribute to search (default: \"(objectclass=*)\"\n\ | ||
| 292 | -b [--base]\n\ | ||
| 293 | ldap base (eg. ou=my unit, o=my org, c=at)\n\ | ||
| 294 | -D [--bind]\n\ | ||
| 295 | ldap bind DN (if required)\n\ | ||
| 296 | -P [--pass]\n\ | ||
| 297 | ldap password (if required)\n")); | ||
| 298 | |||
| 299 | #ifdef HAVE_LDAP_SET_OPTION | ||
| 300 | printf (_("\ | ||
| 301 | -2 [--ver2]\n\ | ||
| 302 | use ldap protocol version 2\n\ | ||
| 303 | -3 [--ver3]\n\ | ||
| 304 | use ldap protocol version 3\n\ | ||
| 305 | (default protocol version: %d)\n"), | ||
| 306 | DEFAULT_PROTOCOL); | ||
| 307 | #endif | ||
| 308 | |||
| 309 | printf (_(UT_WARN_CRIT)); | ||
| 310 | |||
| 311 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 312 | |||
| 313 | printf (_(UT_VERBOSE)); | ||
| 314 | |||
| 315 | printf (_(UT_SUPPORT)); | ||
| 316 | } | ||
| 317 | |||
| 318 | |||
| 319 | |||
| 320 | |||
| 321 | void | ||
| 322 | print_usage (void) | ||
| 323 | { | ||
| 324 | printf (_("\ | ||
| 325 | Usage: %s -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]\n\ | ||
| 326 | [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]%s\n\ | ||
| 327 | (Note: all times are in seconds.)\n"), | ||
| 328 | progname, (HAVE_LDAP_SET_OPTION ? "[-2|-3] [-4|-6]" : "")); | ||
| 329 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 330 | } | ||
diff --git a/plugins/check_load.c b/plugins/check_load.c index bdb1e55d..c12cad37 100644 --- a/plugins/check_load.c +++ b/plugins/check_load.c | |||
| @@ -158,8 +158,8 @@ process_arguments (int argc, char **argv) | |||
| 158 | { | 158 | { |
| 159 | int c = 0; | 159 | int c = 0; |
| 160 | 160 | ||
| 161 | int option_index = 0; | 161 | int option = 0; |
| 162 | static struct option long_options[] = { | 162 | static struct option longopts[] = { |
| 163 | {"warning", required_argument, 0, 'w'}, | 163 | {"warning", required_argument, 0, 'w'}, |
| 164 | {"critical", required_argument, 0, 'c'}, | 164 | {"critical", required_argument, 0, 'c'}, |
| 165 | {"version", no_argument, 0, 'V'}, | 165 | {"version", no_argument, 0, 'V'}, |
| @@ -171,7 +171,7 @@ process_arguments (int argc, char **argv) | |||
| 171 | return ERROR; | 171 | return ERROR; |
| 172 | 172 | ||
| 173 | while (1) { | 173 | while (1) { |
| 174 | c = getopt_long (argc, argv, "Vhc:w:", long_options, &option_index); | 174 | c = getopt_long (argc, argv, "Vhc:w:", longopts, &option); |
| 175 | 175 | ||
| 176 | if (c == -1 || c == EOF) | 176 | if (c == -1 || c == EOF) |
| 177 | break; | 177 | break; |
diff --git a/plugins/check_mrtg.c b/plugins/check_mrtg.c index 21efac2e..849e636f 100644 --- a/plugins/check_mrtg.c +++ b/plugins/check_mrtg.c | |||
| @@ -149,8 +149,8 @@ process_arguments (int argc, char **argv) | |||
| 149 | { | 149 | { |
| 150 | int c; | 150 | int c; |
| 151 | 151 | ||
| 152 | int option_index = 0; | 152 | int option = 0; |
| 153 | static struct option long_options[] = { | 153 | static struct option longopts[] = { |
| 154 | {"logfile", required_argument, 0, 'F'}, | 154 | {"logfile", required_argument, 0, 'F'}, |
| 155 | {"expires", required_argument, 0, 'e'}, | 155 | {"expires", required_argument, 0, 'e'}, |
| 156 | {"aggregation", required_argument, 0, 'a'}, | 156 | {"aggregation", required_argument, 0, 'a'}, |
| @@ -178,8 +178,8 @@ process_arguments (int argc, char **argv) | |||
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | while (1) { | 180 | while (1) { |
| 181 | c = getopt_long (argc, argv, "hVF:e:a:v:c:w:l:u:", long_options, | 181 | c = getopt_long (argc, argv, "hVF:e:a:v:c:w:l:u:", longopts, |
| 182 | &option_index); | 182 | &option); |
| 183 | 183 | ||
| 184 | if (c == -1 || c == EOF) | 184 | if (c == -1 || c == EOF) |
| 185 | break; | 185 | break; |
diff --git a/plugins/check_mrtgtraf.c b/plugins/check_mrtgtraf.c index be2f562e..93b2c1d0 100644 --- a/plugins/check_mrtgtraf.c +++ b/plugins/check_mrtgtraf.c | |||
| @@ -201,7 +201,7 @@ process_arguments (int argc, char **argv) | |||
| 201 | { | 201 | { |
| 202 | int c; | 202 | int c; |
| 203 | 203 | ||
| 204 | int option_index = 0; | 204 | int option = 0; |
| 205 | static struct option longopts[] = { | 205 | static struct option longopts[] = { |
| 206 | {"logfile", required_argument, 0, 'F'}, | 206 | {"logfile", required_argument, 0, 'F'}, |
| 207 | {"expires", required_argument, 0, 'e'}, | 207 | {"expires", required_argument, 0, 'e'}, |
| @@ -228,7 +228,7 @@ process_arguments (int argc, char **argv) | |||
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | while (1) { | 230 | while (1) { |
| 231 | c = getopt_long (argc, argv, "hVF:e:a:c:w:", longopts, &option_index); | 231 | c = getopt_long (argc, argv, "hVF:e:a:c:w:", longopts, &option); |
| 232 | 232 | ||
| 233 | if (c == -1 || c == EOF) | 233 | if (c == -1 || c == EOF) |
| 234 | break; | 234 | break; |
diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c index 16a1f133..a7afa52f 100644 --- a/plugins/check_mysql.c +++ b/plugins/check_mysql.c | |||
| @@ -25,65 +25,23 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 25 | #include <mysql/mysql.h> | 25 | #include <mysql/mysql.h> |
| 26 | #include <mysql/errmsg.h> | 26 | #include <mysql/errmsg.h> |
| 27 | 27 | ||
| 28 | void | 28 | char *db_user = NULL; |
| 29 | print_usage (void) | 29 | char *db_host = NULL; |
| 30 | { | 30 | char *db_pass = NULL; |
| 31 | printf (_("\ | 31 | char *db = NULL; |
| 32 | Usage: %s [-d database] [-H host] [-P port] [-u user] [-p password]\n"), | ||
| 33 | progname); | ||
| 34 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 35 | } | ||
| 36 | |||
| 37 | void | ||
| 38 | print_help (void) | ||
| 39 | { | ||
| 40 | char *myport; | ||
| 41 | asprintf (&myport, "%d", MYSQL_PORT); | ||
| 42 | |||
| 43 | print_revision (progname, revision); | ||
| 44 | |||
| 45 | printf (_(COPYRIGHT), copyright, email); | ||
| 46 | |||
| 47 | printf (_("This program tests connections to a mysql server\n")); | ||
| 48 | |||
| 49 | print_usage (); | ||
| 50 | |||
| 51 | printf (_(UT_HELP_VRSN)); | ||
| 52 | |||
| 53 | printf (_(UT_HOST_PORT), 'P', myport); | ||
| 54 | |||
| 55 | printf (_("\ | ||
| 56 | -d, --database=STRING\n\ | ||
| 57 | Check database with indicated name\n\ | ||
| 58 | -u, --username=STRING\n\ | ||
| 59 | Connect using the indicated username\n\ | ||
| 60 | -p, --password=STRING\n\ | ||
| 61 | Use the indicated password to authenticate the connection\n\ | ||
| 62 | ==> IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!! <==\n\ | ||
| 63 | Your clear-text password will be visible as a process table entry\n")); | ||
| 64 | |||
| 65 | printf (_("\n\ | ||
| 66 | There are no required arguments. By default, the local database with\n\ | ||
| 67 | a server listening on MySQL standard port %d will be checked\n"), MYSQL_PORT); | ||
| 68 | |||
| 69 | printf (_(UT_SUPPORT)); | ||
| 70 | } | ||
| 71 | |||
| 72 | char *db_user = ""; | ||
| 73 | char *db_host = ""; | ||
| 74 | char *db_pass = ""; | ||
| 75 | char *db = ""; | ||
| 76 | unsigned int db_port = MYSQL_PORT; | 32 | unsigned int db_port = MYSQL_PORT; |
| 77 | 33 | ||
| 78 | int process_arguments (int, char **); | 34 | int process_arguments (int, char **); |
| 79 | int validate_arguments (void); | 35 | int validate_arguments (void); |
| 36 | void print_help (void); | ||
| 37 | void print_usage (void); | ||
| 80 | 38 | ||
| 81 | int | 39 | int |
| 82 | main (int argc, char **argv) | 40 | main (int argc, char **argv) |
| 83 | { | 41 | { |
| 84 | 42 | ||
| 85 | MYSQL mysql; | 43 | MYSQL mysql; |
| 86 | char result[1024]; | 44 | char *result = NULL; |
| 87 | 45 | ||
| 88 | if (process_arguments (argc, argv) != OK) | 46 | if (process_arguments (argc, argv) != OK) |
| 89 | usage (_("Invalid command arguments supplied\n")); | 47 | usage (_("Invalid command arguments supplied\n")); |
| @@ -92,62 +50,32 @@ main (int argc, char **argv) | |||
| 92 | mysql_init (&mysql); | 50 | mysql_init (&mysql); |
| 93 | 51 | ||
| 94 | /* establish a connection to the server and error checking */ | 52 | /* establish a connection to the server and error checking */ |
| 95 | if (!mysql_real_connect | 53 | if (!mysql_real_connect(&mysql,db_host,db_user,db_pass,db,db_port,NULL,0)) { |
| 96 | (&mysql, db_host, db_user, db_pass, db, db_port, NULL, 0)) { | 54 | if (mysql_errno (&mysql) == CR_UNKNOWN_HOST) |
| 97 | 55 | die (STATE_WARNING, "%s\n", mysql_error (&mysql)); | |
| 98 | if (mysql_errno (&mysql) == CR_UNKNOWN_HOST) { | 56 | else if (mysql_errno (&mysql) == CR_VERSION_ERROR) |
| 99 | printf ("%s\n", mysql_error (&mysql)); | 57 | die (STATE_WARNING, "%s\n", mysql_error (&mysql)); |
| 100 | return STATE_WARNING; | 58 | else if (mysql_errno (&mysql) == CR_OUT_OF_MEMORY) |
| 101 | 59 | die (STATE_WARNING, "%s\n", mysql_error (&mysql)); | |
| 102 | } | 60 | else if (mysql_errno (&mysql) == CR_IPSOCK_ERROR) |
| 103 | else if (mysql_errno (&mysql) == CR_VERSION_ERROR) { | 61 | die (STATE_WARNING, "%s\n", mysql_error (&mysql)); |
| 104 | printf ("%s\n", mysql_error (&mysql)); | 62 | else if (mysql_errno (&mysql) == CR_SOCKET_CREATE_ERROR) |
| 105 | return STATE_WARNING; | 63 | die (STATE_WARNING, "%s\n", mysql_error (&mysql)); |
| 106 | 64 | else | |
| 107 | } | 65 | die (STATE_CRITICAL, "%s\n", mysql_error (&mysql)); |
| 108 | else if (mysql_errno (&mysql) == CR_OUT_OF_MEMORY) { | ||
| 109 | printf ("%s\n", mysql_error (&mysql)); | ||
| 110 | return STATE_WARNING; | ||
| 111 | |||
| 112 | } | ||
| 113 | else if (mysql_errno (&mysql) == CR_IPSOCK_ERROR) { | ||
| 114 | printf ("%s\n", mysql_error (&mysql)); | ||
| 115 | return STATE_WARNING; | ||
| 116 | |||
| 117 | } | ||
| 118 | else if (mysql_errno (&mysql) == CR_SOCKET_CREATE_ERROR) { | ||
| 119 | printf ("%s\n", mysql_error (&mysql)); | ||
| 120 | return STATE_WARNING; | ||
| 121 | |||
| 122 | } | ||
| 123 | else { | ||
| 124 | printf ("%s\n", mysql_error (&mysql)); | ||
| 125 | return STATE_CRITICAL; | ||
| 126 | } | ||
| 127 | |||
| 128 | } | 66 | } |
| 129 | 67 | ||
| 130 | /* get the server stats */ | 68 | /* get the server stats */ |
| 131 | sprintf (result, mysql_stat (&mysql)); | 69 | result = strdup (mysql_stat (&mysql)); |
| 132 | 70 | ||
| 133 | /* error checking once more */ | 71 | /* error checking once more */ |
| 134 | if (mysql_error (&mysql)) { | 72 | if (mysql_error (&mysql)) { |
| 135 | 73 | if (mysql_errno (&mysql) == CR_SERVER_GONE_ERROR) | |
| 136 | if (mysql_errno (&mysql) == CR_SERVER_GONE_ERROR) { | 74 | die (STATE_CRITICAL, "%s\n", mysql_error (&mysql)); |
| 137 | printf ("%s\n", mysql_error (&mysql)); | 75 | else if (mysql_errno (&mysql) == CR_SERVER_LOST) |
| 138 | return STATE_CRITICAL; | 76 | die (STATE_CRITICAL, "%s\n", mysql_error (&mysql)); |
| 139 | 77 | else if (mysql_errno (&mysql) == CR_UNKNOWN_ERROR) | |
| 140 | } | 78 | die (STATE_CRITICAL, "%s\n", mysql_error (&mysql)); |
| 141 | else if (mysql_errno (&mysql) == CR_SERVER_LOST) { | ||
| 142 | printf ("%s\n", mysql_error (&mysql)); | ||
| 143 | return STATE_CRITICAL; | ||
| 144 | |||
| 145 | } | ||
| 146 | else if (mysql_errno (&mysql) == CR_UNKNOWN_ERROR) { | ||
| 147 | printf ("%s\n", mysql_error (&mysql)); | ||
| 148 | return STATE_UNKNOWN; | ||
| 149 | } | ||
| 150 | |||
| 151 | } | 79 | } |
| 152 | 80 | ||
| 153 | /* close the connection */ | 81 | /* close the connection */ |
| @@ -169,8 +97,8 @@ process_arguments (int argc, char **argv) | |||
| 169 | { | 97 | { |
| 170 | int c; | 98 | int c; |
| 171 | 99 | ||
| 172 | int option_index = 0; | 100 | int option = 0; |
| 173 | static struct option long_options[] = { | 101 | static struct option longopts[] = { |
| 174 | {"hostname", required_argument, 0, 'H'}, | 102 | {"hostname", required_argument, 0, 'H'}, |
| 175 | {"database", required_argument, 0, 'd'}, | 103 | {"database", required_argument, 0, 'd'}, |
| 176 | {"username", required_argument, 0, 'u'}, | 104 | {"username", required_argument, 0, 'u'}, |
| @@ -186,7 +114,7 @@ process_arguments (int argc, char **argv) | |||
| 186 | return ERROR; | 114 | return ERROR; |
| 187 | 115 | ||
| 188 | while (1) { | 116 | while (1) { |
| 189 | c = getopt_long (argc, argv, "hVP:p:u:d:H:", long_options, &option_index); | 117 | c = getopt_long (argc, argv, "hVP:p:u:d:H:", longopts, &option); |
| 190 | 118 | ||
| 191 | if (c == -1 || c == EOF) | 119 | if (c == -1 || c == EOF) |
| 192 | break; | 120 | break; |
| @@ -256,5 +184,69 @@ process_arguments (int argc, char **argv) | |||
| 256 | int | 184 | int |
| 257 | validate_arguments (void) | 185 | validate_arguments (void) |
| 258 | { | 186 | { |
| 187 | if (db_user == NULL) | ||
| 188 | db_user = strdup(""); | ||
| 189 | |||
| 190 | if (db_host == NULL) | ||
| 191 | db_host = strdup(""); | ||
| 192 | |||
| 193 | if (db_pass == NULL) | ||
| 194 | db_pass == strdup(""); | ||
| 195 | |||
| 196 | if (db == NULL) | ||
| 197 | db = strdup(""); | ||
| 198 | |||
| 259 | return OK; | 199 | return OK; |
| 260 | } | 200 | } |
| 201 | |||
| 202 | |||
| 203 | |||
| 204 | |||
| 205 | |||
| 206 | |||
| 207 | void | ||
| 208 | print_help (void) | ||
| 209 | { | ||
| 210 | char *myport; | ||
| 211 | asprintf (&myport, "%d", MYSQL_PORT); | ||
| 212 | |||
| 213 | print_revision (progname, revision); | ||
| 214 | |||
| 215 | printf (_(COPYRIGHT), copyright, email); | ||
| 216 | |||
| 217 | printf (_("This program tests connections to a mysql server\n")); | ||
| 218 | |||
| 219 | print_usage (); | ||
| 220 | |||
| 221 | printf (_(UT_HELP_VRSN)); | ||
| 222 | |||
| 223 | printf (_(UT_HOST_PORT), 'P', myport); | ||
| 224 | |||
| 225 | printf (_("\ | ||
| 226 | -d, --database=STRING\n\ | ||
| 227 | Check database with indicated name\n\ | ||
| 228 | -u, --username=STRING\n\ | ||
| 229 | Connect using the indicated username\n\ | ||
| 230 | -p, --password=STRING\n\ | ||
| 231 | Use the indicated password to authenticate the connection\n\ | ||
| 232 | ==> IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!! <==\n\ | ||
| 233 | Your clear-text password will be visible as a process table entry\n")); | ||
| 234 | |||
| 235 | printf (_("\n\ | ||
| 236 | There are no required arguments. By default, the local database with\n\ | ||
| 237 | a server listening on MySQL standard port %d will be checked\n"), MYSQL_PORT); | ||
| 238 | |||
| 239 | printf (_(UT_SUPPORT)); | ||
| 240 | } | ||
| 241 | |||
| 242 | |||
| 243 | |||
| 244 | |||
| 245 | void | ||
| 246 | print_usage (void) | ||
| 247 | { | ||
| 248 | printf (_("\ | ||
| 249 | Usage: %s [-d database] [-H host] [-P port] [-u user] [-p password]\n"), | ||
| 250 | progname); | ||
| 251 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 252 | } | ||
diff --git a/plugins/check_nagios.c b/plugins/check_nagios.c index a678e2a4..5b21ba1d 100644 --- a/plugins/check_nagios.c +++ b/plugins/check_nagios.c | |||
| @@ -25,48 +25,9 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 25 | #include "popen.h" | 25 | #include "popen.h" |
| 26 | #include "utils.h" | 26 | #include "utils.h" |
| 27 | 27 | ||
| 28 | void | ||
| 29 | print_usage (void) | ||
| 30 | { | ||
| 31 | printf (_("\ | ||
| 32 | Usage: %s -F <status log file> -e <expire_minutes> -C <process_string>\n"), | ||
| 33 | progname); | ||
| 34 | } | ||
| 35 | |||
| 36 | void | ||
| 37 | print_help (void) | ||
| 38 | { | ||
| 39 | print_revision (progname, revision); | ||
| 40 | |||
| 41 | printf (_(COPYRIGHT), copyright, email); | ||
| 42 | |||
| 43 | printf (_("\ | ||
| 44 | This plugin attempts to check the status of the Nagios process on the local\n\ | ||
| 45 | machine. The plugin will check to make sure the Nagios status log is no older\n\ | ||
| 46 | than the number of minutes specified by the <expire_minutes> option. It also\n\ | ||
| 47 | uses the /bin/ps command to check for a process matching whatever you specify\n\ | ||
| 48 | by the <process_string> argument.\n")); | ||
| 49 | |||
| 50 | print_usage (); | ||
| 51 | |||
| 52 | printf (_(UT_HELP_VRSN)); | ||
| 53 | |||
| 54 | printf (_("\ | ||
| 55 | -F, --filename=FILE\n\ | ||
| 56 | Name of the log file to check\n\ | ||
| 57 | -e, --expires=INTEGER\n\ | ||
| 58 | Seconds aging afterwhich logfile is condsidered stale\n\ | ||
| 59 | -C, --command=STRING\n\ | ||
| 60 | Command to search for in process table\n")); | ||
| 61 | |||
| 62 | printf (_("\ | ||
| 63 | Example:\n\ | ||
| 64 | ./check_nagios -e 5 \\\ | ||
| 65 | -F /usr/local/nagios/var/status.log \\\ | ||
| 66 | -C /usr/local/nagios/bin/nagios\n")); | ||
| 67 | } | ||
| 68 | |||
| 69 | int process_arguments (int, char **); | 28 | int process_arguments (int, char **); |
| 29 | void print_help (void); | ||
| 30 | void print_usage (void); | ||
| 70 | 31 | ||
| 71 | char *status_log = NULL; | 32 | char *status_log = NULL; |
| 72 | char *process_string = NULL; | 33 | char *process_string = NULL; |
| @@ -198,8 +159,8 @@ process_arguments (int argc, char **argv) | |||
| 198 | { | 159 | { |
| 199 | int c; | 160 | int c; |
| 200 | 161 | ||
| 201 | int option_index = 0; | 162 | int option = 0; |
| 202 | static struct option long_options[] = { | 163 | static struct option longopts[] = { |
| 203 | {"filename", required_argument, 0, 'F'}, | 164 | {"filename", required_argument, 0, 'F'}, |
| 204 | {"expires", required_argument, 0, 'e'}, | 165 | {"expires", required_argument, 0, 'e'}, |
| 205 | {"command", required_argument, 0, 'C'}, | 166 | {"command", required_argument, 0, 'C'}, |
| @@ -225,7 +186,7 @@ process_arguments (int argc, char **argv) | |||
| 225 | } | 186 | } |
| 226 | 187 | ||
| 227 | while (1) { | 188 | while (1) { |
| 228 | c = getopt_long (argc, argv, "+hVvF:C:e:", long_options, &option_index); | 189 | c = getopt_long (argc, argv, "+hVvF:C:e:", longopts, &option); |
| 229 | 190 | ||
| 230 | if (c == -1 || c == EOF || c == 1) | 191 | if (c == -1 || c == EOF || c == 1) |
| 231 | break; | 192 | break; |
| @@ -252,8 +213,8 @@ process_arguments (int argc, char **argv) | |||
| 252 | expire_minutes = atoi (optarg); | 213 | expire_minutes = atoi (optarg); |
| 253 | else | 214 | else |
| 254 | die (STATE_UNKNOWN, | 215 | die (STATE_UNKNOWN, |
| 255 | _("Expiration time must be an integer (seconds)\nType '%s -h' for additional help\n"), | 216 | _("Expiration time must be an integer (seconds)\nType '%s -h' for additional help\n"), |
| 256 | progname); | 217 | progname); |
| 257 | break; | 218 | break; |
| 258 | case 'v': | 219 | case 'v': |
| 259 | verbose++; | 220 | verbose++; |
| @@ -264,8 +225,8 @@ process_arguments (int argc, char **argv) | |||
| 264 | 225 | ||
| 265 | if (status_log == NULL) | 226 | if (status_log == NULL) |
| 266 | die (STATE_UNKNOWN, | 227 | die (STATE_UNKNOWN, |
| 267 | _("You must provide the status_log\nType '%s -h' for additional help\n"), | 228 | _("You must provide the status_log\nType '%s -h' for additional help\n"), |
| 268 | progname); | 229 | progname); |
| 269 | else if (process_string == NULL) | 230 | else if (process_string == NULL) |
| 270 | die (STATE_UNKNOWN, | 231 | die (STATE_UNKNOWN, |
| 271 | _("You must provide a process string\nType '%s -h' for additional help\n"), | 232 | _("You must provide a process string\nType '%s -h' for additional help\n"), |
| @@ -273,3 +234,52 @@ process_arguments (int argc, char **argv) | |||
| 273 | 234 | ||
| 274 | return OK; | 235 | return OK; |
| 275 | } | 236 | } |
| 237 | |||
| 238 | |||
| 239 | |||
| 240 | |||
| 241 | |||
| 242 | |||
| 243 | void | ||
| 244 | print_help (void) | ||
| 245 | { | ||
| 246 | print_revision (progname, revision); | ||
| 247 | |||
| 248 | printf (_(COPYRIGHT), copyright, email); | ||
| 249 | |||
| 250 | printf (_("\ | ||
| 251 | This plugin attempts to check the status of the Nagios process on the local\n\ | ||
| 252 | machine. The plugin will check to make sure the Nagios status log is no older\n\ | ||
| 253 | than the number of minutes specified by the <expire_minutes> option. It also\n\ | ||
| 254 | uses the /bin/ps command to check for a process matching whatever you specify\n\ | ||
| 255 | by the <process_string> argument.\n")); | ||
| 256 | |||
| 257 | print_usage (); | ||
| 258 | |||
| 259 | printf (_(UT_HELP_VRSN)); | ||
| 260 | |||
| 261 | printf (_("\ | ||
| 262 | -F, --filename=FILE\n\ | ||
| 263 | Name of the log file to check\n\ | ||
| 264 | -e, --expires=INTEGER\n\ | ||
| 265 | Seconds aging afterwhich logfile is condsidered stale\n\ | ||
| 266 | -C, --command=STRING\n\ | ||
| 267 | Command to search for in process table\n")); | ||
| 268 | |||
| 269 | printf (_("\ | ||
| 270 | Example:\n\ | ||
| 271 | ./check_nagios -e 5 \\\ | ||
| 272 | -F /usr/local/nagios/var/status.log \\\ | ||
| 273 | -C /usr/local/nagios/bin/nagios\n")); | ||
| 274 | } | ||
| 275 | |||
| 276 | |||
| 277 | |||
| 278 | |||
| 279 | void | ||
| 280 | print_usage (void) | ||
| 281 | { | ||
| 282 | printf (_("\ | ||
| 283 | Usage: %s -F <status log file> -e <expire_minutes> -C <process_string>\n"), | ||
| 284 | progname); | ||
| 285 | } | ||
diff --git a/plugins/check_nt.c b/plugins/check_nt.c index b1314d4b..3b2bd5e1 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c | |||
| @@ -28,7 +28,6 @@ | |||
| 28 | * | 28 | * |
| 29 | *****************************************************************************/ | 29 | *****************************************************************************/ |
| 30 | 30 | ||
| 31 | #include "config.h" | ||
| 32 | #include "common.h" | 31 | #include "common.h" |
| 33 | #include "netutils.h" | 32 | #include "netutils.h" |
| 34 | #include "utils.h" | 33 | #include "utils.h" |
| @@ -331,8 +330,8 @@ int main(int argc, char **argv){ | |||
| 331 | int process_arguments(int argc, char **argv){ | 330 | int process_arguments(int argc, char **argv){ |
| 332 | int c; | 331 | int c; |
| 333 | 332 | ||
| 334 | int option_index = 0; | 333 | int option = 0; |
| 335 | static struct option long_options[] = | 334 | static struct option longopts[] = |
| 336 | { | 335 | { |
| 337 | {"port", required_argument,0,'p'}, | 336 | {"port", required_argument,0,'p'}, |
| 338 | {"timeout", required_argument,0,'t'}, | 337 | {"timeout", required_argument,0,'t'}, |
| @@ -366,7 +365,7 @@ int process_arguments(int argc, char **argv){ | |||
| 366 | } | 365 | } |
| 367 | 366 | ||
| 368 | while (1){ | 367 | while (1){ |
| 369 | c = getopt_long(argc,argv,"+hVH:t:c:w:p:v:l:s:d:",long_options,&option_index); | 368 | c = getopt_long(argc,argv,"+hVH:t:c:w:p:v:l:s:d:",longopts,&option); |
| 370 | 369 | ||
| 371 | if (c==-1||c==EOF||c==1) | 370 | if (c==-1||c==EOF||c==1) |
| 372 | break; | 371 | break; |
| @@ -385,10 +384,10 @@ int process_arguments(int argc, char **argv){ | |||
| 385 | exit(STATE_OK); | 384 | exit(STATE_OK); |
| 386 | case 'H': /* hostname */ | 385 | case 'H': /* hostname */ |
| 387 | if (server_address) free(server_address); | 386 | if (server_address) free(server_address); |
| 388 | server_address = strdup(optarg); | 387 | server_address = optarg; |
| 389 | break; | 388 | break; |
| 390 | case 's': /* password */ | 389 | case 's': /* password */ |
| 391 | req_password = strdup (optarg); | 390 | req_password = optarg; |
| 392 | break; | 391 | break; |
| 393 | case 'p': /* port */ | 392 | case 'p': /* port */ |
| 394 | if (is_intnonneg(optarg)) | 393 | if (is_intnonneg(optarg)) |
| @@ -421,7 +420,7 @@ int process_arguments(int argc, char **argv){ | |||
| 421 | return ERROR; | 420 | return ERROR; |
| 422 | break; | 421 | break; |
| 423 | case 'l': /* value list */ | 422 | case 'l': /* value list */ |
| 424 | value_list = strdup (optarg); | 423 | value_list = optarg; |
| 425 | break; | 424 | break; |
| 426 | case 'w': /* warning threshold */ | 425 | case 'w': /* warning threshold */ |
| 427 | warning_value=strtoul(optarg,NULL,10); | 426 | warning_value=strtoul(optarg,NULL,10); |
diff --git a/plugins/check_nwstat.c b/plugins/check_nwstat.c index 4b227269..92a1f117 100644 --- a/plugins/check_nwstat.c +++ b/plugins/check_nwstat.c | |||
| @@ -705,8 +705,8 @@ main(int argc, char **argv) { | |||
| 705 | int process_arguments(int argc, char **argv) { | 705 | int process_arguments(int argc, char **argv) { |
| 706 | int c; | 706 | int c; |
| 707 | 707 | ||
| 708 | int option_index = 0; | 708 | int option = 0; |
| 709 | static struct option long_options[] = | 709 | static struct option longopts[] = |
| 710 | { | 710 | { |
| 711 | {"port", required_argument,0,'p'}, | 711 | {"port", required_argument,0,'p'}, |
| 712 | {"timeout", required_argument,0,'t'}, | 712 | {"timeout", required_argument,0,'t'}, |
| @@ -741,7 +741,7 @@ int process_arguments(int argc, char **argv) { | |||
| 741 | } | 741 | } |
| 742 | 742 | ||
| 743 | while (1) { | 743 | while (1) { |
| 744 | c = getopt_long(argc,argv,"+hoVH:t:c:w:p:v:",long_options,&option_index); | 744 | c = getopt_long(argc,argv,"+hoVH:t:c:w:p:v:",longopts,&option); |
| 745 | 745 | ||
| 746 | if (c==-1||c==EOF||c==1) | 746 | if (c==-1||c==EOF||c==1) |
| 747 | break; | 747 | break; |
diff --git a/plugins/check_overcr.c b/plugins/check_overcr.c index 9958432e..67fb5d1f 100644 --- a/plugins/check_overcr.c +++ b/plugins/check_overcr.c | |||
| @@ -285,8 +285,8 @@ process_arguments (int argc, char **argv) | |||
| 285 | { | 285 | { |
| 286 | int c; | 286 | int c; |
| 287 | 287 | ||
| 288 | int option_index = 0; | 288 | int option = 0; |
| 289 | static struct option long_options[] = { | 289 | static struct option longopts[] = { |
| 290 | {"port", required_argument, 0, 'p'}, | 290 | {"port", required_argument, 0, 'p'}, |
| 291 | {"timeout", required_argument, 0, 't'}, | 291 | {"timeout", required_argument, 0, 't'}, |
| 292 | {"critical", required_argument, 0, 'c'}, | 292 | {"critical", required_argument, 0, 'c'}, |
| @@ -320,8 +320,8 @@ process_arguments (int argc, char **argv) | |||
| 320 | } | 320 | } |
| 321 | 321 | ||
| 322 | while (1) { | 322 | while (1) { |
| 323 | c = getopt_long (argc, argv, "+hVH:t:c:w:p:v:", long_options, | 323 | c = getopt_long (argc, argv, "+hVH:t:c:w:p:v:", longopts, |
| 324 | &option_index); | 324 | &option); |
| 325 | 325 | ||
| 326 | if (c == -1 || c == EOF || c == 1) | 326 | if (c == -1 || c == EOF || c == 1) |
| 327 | break; | 327 | break; |
diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c index 2dce0b35..6cd217e0 100644 --- a/plugins/check_pgsql.c +++ b/plugins/check_pgsql.c | |||
| @@ -1,26 +1,19 @@ | |||
| 1 | /****************************************************************************** | 1 | /****************************************************************************** |
| 2 | * | 2 | |
| 3 | * Program: PostgreSQL plugin 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 | * | ||
| 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 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 25 | 18 | ||
| 26 | #define DEFAULT_DB "template1" | 19 | #define DEFAULT_DB "template1" |
| @@ -32,9 +25,9 @@ enum { | |||
| 32 | DEFAULT_CRIT = 8 | 25 | DEFAULT_CRIT = 8 |
| 33 | }; | 26 | }; |
| 34 | 27 | ||
| 35 | #include "config.h" | ||
| 36 | #include "common.h" | 28 | #include "common.h" |
| 37 | #include "utils.h" | 29 | #include "utils.h" |
| 30 | #include "netutils.h" | ||
| 38 | #include <libpq-fe.h> | 31 | #include <libpq-fe.h> |
| 39 | 32 | ||
| 40 | int process_arguments (int, char **); | 33 | int process_arguments (int, char **); |
| @@ -121,72 +114,6 @@ Please note that all tags must be lowercase to use the DocBook XML DTD. | |||
| 121 | 114 | ||
| 122 | 115 | ||
| 123 | 116 | ||
| 124 | void | ||
| 125 | print_help (void) | ||
| 126 | { | ||
| 127 | char *myport; | ||
| 128 | |||
| 129 | asprintf (&myport, "%d", DEFAULT_PORT); | ||
| 130 | |||
| 131 | print_revision (progname, revision); | ||
| 132 | |||
| 133 | printf (_(COPYRIGHT), copyright, email); | ||
| 134 | |||
| 135 | printf (_("Test whether a PostgreSQL DBMS is accepting connections.\n\n")); | ||
| 136 | |||
| 137 | print_usage (); | ||
| 138 | |||
| 139 | printf (_(UT_HELP_VRSN)); | ||
| 140 | |||
| 141 | printf (_(UT_HOST_PORT), 'P', myport); | ||
| 142 | |||
| 143 | printf (_(UT_IPv46)); | ||
| 144 | |||
| 145 | printf (S_("\ | ||
| 146 | -d, --database=STRING\n\ | ||
| 147 | Database to check (default: %s)\n\ | ||
| 148 | -l, --logname = STRING\n\ | ||
| 149 | Login name of user\n\ | ||
| 150 | -p, --password = STRING\n\ | ||
| 151 | Password (BIG SECURITY ISSUE)\n"), DEFAULT_DB); | ||
| 152 | |||
| 153 | printf (_(UT_WARN_CRIT)); | ||
| 154 | |||
| 155 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 156 | |||
| 157 | printf (_(UT_VERBOSE)); | ||
| 158 | |||
| 159 | printf (S_("\nAll parameters are optional.\n\ | ||
| 160 | \n\ | ||
| 161 | This plugin tests a PostgreSQL DBMS to determine whether it is active and\n\ | ||
| 162 | accepting queries. In its current operation, it simply connects to the\n\ | ||
| 163 | specified database, and then disconnects. If no database is specified, it\n\ | ||
| 164 | connects to the template1 database, which is present in every functioning \n\ | ||
| 165 | PostgreSQL DBMS.\n")); | ||
| 166 | printf (S_("\n\ | ||
| 167 | The plugin will connect to a local postmaster if no host is specified. To\n\ | ||
| 168 | connect to a remote host, be sure that the remote postmaster accepts TCP/IP\n\ | ||
| 169 | connections (start the postmaster with the -i option).\n")); | ||
| 170 | printf (S_("\n\ | ||
| 171 | Typically, the nagios user (unless the --logname option is used) should be\n\ | ||
| 172 | able to connect to the database without a password. The plugin can also send\n\ | ||
| 173 | a password, but no effort is made to obsure or encrypt the password.\n")); | ||
| 174 | |||
| 175 | support (); | ||
| 176 | } | ||
| 177 | |||
| 178 | void | ||
| 179 | print_usage (void) | ||
| 180 | { | ||
| 181 | printf (S_("\ | ||
| 182 | Usage:\n %s [-H <host>] [-P <port>] [-c <critical time>] [-w <warning time>]\n\ | ||
| 183 | [-t <timeout>]"), progname); | ||
| 184 | printf (S_("[-d <database>] [-l <logname>] [-p <password>]\n")); | ||
| 185 | printf (S_("\ | ||
| 186 | %s (-h | --help) for detailed help\n\ | ||
| 187 | %s (-V | --version) for version information\n"), | ||
| 188 | progname, progname); | ||
| 189 | } | ||
| 190 | 117 | ||
| 191 | int | 118 | int |
| 192 | main (int argc, char **argv) | 119 | main (int argc, char **argv) |
| @@ -251,8 +178,8 @@ process_arguments (int argc, char **argv) | |||
| 251 | { | 178 | { |
| 252 | int c; | 179 | int c; |
| 253 | 180 | ||
| 254 | int option_index = 0; | 181 | int option = 0; |
| 255 | static struct option long_options[] = { | 182 | static struct option longopts[] = { |
| 256 | {"help", no_argument, 0, 'h'}, | 183 | {"help", no_argument, 0, 'h'}, |
| 257 | {"version", no_argument, 0, 'V'}, | 184 | {"version", no_argument, 0, 'V'}, |
| 258 | {"timeout", required_argument, 0, 't'}, | 185 | {"timeout", required_argument, 0, 't'}, |
| @@ -269,7 +196,7 @@ process_arguments (int argc, char **argv) | |||
| 269 | 196 | ||
| 270 | while (1) { | 197 | while (1) { |
| 271 | c = getopt_long (argc, argv, "hVt:c:w:H:P:d:l:p:a:", | 198 | c = getopt_long (argc, argv, "hVt:c:w:H:P:d:l:p:a:", |
| 272 | long_options, &option_index); | 199 | longopts, &option); |
| 273 | 200 | ||
| 274 | if (c == EOF) | 201 | if (c == EOF) |
| 275 | break; | 202 | break; |
| @@ -277,6 +204,7 @@ process_arguments (int argc, char **argv) | |||
| 277 | switch (c) { | 204 | switch (c) { |
| 278 | case '?': /* usage */ | 205 | case '?': /* usage */ |
| 279 | usage3 (_("Unknown argument"), optopt); | 206 | usage3 (_("Unknown argument"), optopt); |
| 207 | break; | ||
| 280 | case 'h': /* help */ | 208 | case 'h': /* help */ |
| 281 | print_help (); | 209 | print_help (); |
| 282 | exit (STATE_OK); | 210 | exit (STATE_OK); |
| @@ -286,38 +214,44 @@ process_arguments (int argc, char **argv) | |||
| 286 | case 't': /* timeout period */ | 214 | case 't': /* timeout period */ |
| 287 | if (!is_integer (optarg)) | 215 | if (!is_integer (optarg)) |
| 288 | usage2 (_("Timeout Interval must be an integer"), optarg); | 216 | usage2 (_("Timeout Interval must be an integer"), optarg); |
| 289 | timeout_interval = atoi (optarg); | 217 | else |
| 218 | timeout_interval = atoi (optarg); | ||
| 290 | break; | 219 | break; |
| 291 | case 'c': /* critical time threshold */ | 220 | case 'c': /* critical time threshold */ |
| 292 | if (!is_integer (optarg)) | 221 | if (!is_integer (optarg)) |
| 293 | usage2 (_("Invalid critical threshold"), optarg); | 222 | usage2 (_("Invalid critical threshold"), optarg); |
| 294 | tcrit = atoi (optarg); | 223 | else |
| 224 | tcrit = atoi (optarg); | ||
| 295 | break; | 225 | break; |
| 296 | case 'w': /* warning time threshold */ | 226 | case 'w': /* warning time threshold */ |
| 297 | if (!is_integer (optarg)) | 227 | if (!is_integer (optarg)) |
| 298 | usage2 (_("Invalid critical threshold"), optarg); | 228 | usage2 (_("Invalid critical threshold"), optarg); |
| 299 | twarn = atoi (optarg); | 229 | else |
| 230 | twarn = atoi (optarg); | ||
| 300 | break; | 231 | break; |
| 301 | case 'H': /* host */ | 232 | case 'H': /* host */ |
| 302 | if (!is_host (optarg)) | 233 | if (!is_host (optarg)) |
| 303 | usage2 (_("You gave an invalid host name"), optarg); | 234 | usage2 (_("You gave an invalid host name"), optarg); |
| 304 | pghost = optarg; | 235 | else |
| 236 | pghost = optarg; | ||
| 305 | break; | 237 | break; |
| 306 | case 'P': /* port */ | 238 | case 'P': /* port */ |
| 307 | if (!is_integer (optarg)) | 239 | if (!is_integer (optarg)) |
| 308 | usage2 (_("Port must be an integer"), optarg); | 240 | usage2 (_("Port must be an integer"), optarg); |
| 309 | pgport = optarg; | 241 | else |
| 242 | pgport = optarg; | ||
| 310 | break; | 243 | break; |
| 311 | case 'd': /* database name */ | 244 | case 'd': /* database name */ |
| 312 | if (!is_pg_dbname (optarg)) | 245 | if (!is_pg_dbname (optarg)) /* checks length and valid chars */ |
| 313 | usage2 (_("Database name is not valid"), optarg); | 246 | usage2 (_("Database name is not valid"), optarg); |
| 314 | strncpy (dbName, optarg, NAMEDATALEN - 1); | 247 | else /* we know length, and know optarg is terminated, so us strcpy */ |
| 315 | dbName[NAMEDATALEN - 1] = 0; | 248 | strcpy (dbName, optarg); |
| 316 | break; | 249 | break; |
| 317 | case 'l': /* login name */ | 250 | case 'l': /* login name */ |
| 318 | if (!is_pg_logname (optarg)) | 251 | if (!is_pg_logname (optarg)) |
| 319 | usage2 (_("user name is not valid"), optarg); | 252 | usage2 (_("user name is not valid"), optarg); |
| 320 | pguser = optarg; | 253 | else |
| 254 | pguser = optarg; | ||
| 321 | break; | 255 | break; |
| 322 | case 'p': /* authentication password */ | 256 | case 'p': /* authentication password */ |
| 323 | case 'a': | 257 | case 'a': |
| @@ -433,3 +367,78 @@ is_pg_logname (char *username) | |||
| 433 | </article> | 367 | </article> |
| 434 | -@@ | 368 | -@@ |
| 435 | ******************************************************************************/ | 369 | ******************************************************************************/ |
| 370 | |||
| 371 | |||
| 372 | |||
| 373 | |||
| 374 | |||
| 375 | void | ||
| 376 | print_help (void) | ||
| 377 | { | ||
| 378 | char *myport; | ||
| 379 | |||
| 380 | asprintf (&myport, "%d", DEFAULT_PORT); | ||
| 381 | |||
| 382 | print_revision (progname, revision); | ||
| 383 | |||
| 384 | printf (_(COPYRIGHT), copyright, email); | ||
| 385 | |||
| 386 | printf (_("Test whether a PostgreSQL DBMS is accepting connections.\n\n")); | ||
| 387 | |||
| 388 | print_usage (); | ||
| 389 | |||
| 390 | printf (_(UT_HELP_VRSN)); | ||
| 391 | |||
| 392 | printf (_(UT_HOST_PORT), 'P', myport); | ||
| 393 | |||
| 394 | printf (_(UT_IPv46)); | ||
| 395 | |||
| 396 | printf (S_("\ | ||
| 397 | -d, --database=STRING\n\ | ||
| 398 | Database to check (default: %s)\n\ | ||
| 399 | -l, --logname = STRING\n\ | ||
| 400 | Login name of user\n\ | ||
| 401 | -p, --password = STRING\n\ | ||
| 402 | Password (BIG SECURITY ISSUE)\n"), DEFAULT_DB); | ||
| 403 | |||
| 404 | printf (_(UT_WARN_CRIT)); | ||
| 405 | |||
| 406 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | ||
| 407 | |||
| 408 | printf (_(UT_VERBOSE)); | ||
| 409 | |||
| 410 | printf (S_("\nAll parameters are optional.\n\ | ||
| 411 | \n\ | ||
| 412 | This plugin tests a PostgreSQL DBMS to determine whether it is active and\n\ | ||
| 413 | accepting queries. In its current operation, it simply connects to the\n\ | ||
| 414 | specified database, and then disconnects. If no database is specified, it\n\ | ||
| 415 | connects to the template1 database, which is present in every functioning \n\ | ||
| 416 | PostgreSQL DBMS.\n")); | ||
| 417 | printf (S_("\n\ | ||
| 418 | The plugin will connect to a local postmaster if no host is specified. To\n\ | ||
| 419 | connect to a remote host, be sure that the remote postmaster accepts TCP/IP\n\ | ||
| 420 | connections (start the postmaster with the -i option).\n")); | ||
| 421 | printf (S_("\n\ | ||
| 422 | Typically, the nagios user (unless the --logname option is used) should be\n\ | ||
| 423 | able to connect to the database without a password. The plugin can also send\n\ | ||
| 424 | a password, but no effort is made to obsure or encrypt the password.\n")); | ||
| 425 | |||
| 426 | printf (_(UT_SUPPORT)); | ||
| 427 | } | ||
| 428 | |||
| 429 | |||
| 430 | |||
| 431 | |||
| 432 | void | ||
| 433 | print_usage (void) | ||
| 434 | { | ||
| 435 | printf (S_("\ | ||
| 436 | Usage:\n %s [-H <host>] [-P <port>] [-c <critical time>] [-w <warning time>]\n\ | ||
| 437 | [-t <timeout>]"), progname); | ||
| 438 | printf (S_("[-d <database>] [-l <logname>] [-p <password>]\n")); | ||
| 439 | printf (S_("\ | ||
| 440 | %s (-h | --help) for detailed help\n\ | ||
| 441 | %s (-V | --version) for version information\n"), | ||
| 442 | progname, progname); | ||
| 443 | } | ||
| 444 | |||
diff --git a/plugins/check_ping.c b/plugins/check_ping.c index fd73b8ce..87f9db01 100644 --- a/plugins/check_ping.c +++ b/plugins/check_ping.c | |||
| @@ -162,8 +162,8 @@ process_arguments (int argc, char **argv) | |||
| 162 | int c = 1; | 162 | int c = 1; |
| 163 | char *ptr; | 163 | char *ptr; |
| 164 | 164 | ||
| 165 | int option_index = 0; | 165 | int option = 0; |
| 166 | static struct option long_options[] = { | 166 | static struct option longopts[] = { |
| 167 | STD_LONG_OPTS, | 167 | STD_LONG_OPTS, |
| 168 | {"packets", required_argument, 0, 'p'}, | 168 | {"packets", required_argument, 0, 'p'}, |
| 169 | {"nohtml", no_argument, 0, 'n'}, | 169 | {"nohtml", no_argument, 0, 'n'}, |
| @@ -184,7 +184,7 @@ process_arguments (int argc, char **argv) | |||
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | while (1) { | 186 | while (1) { |
| 187 | c = getopt_long (argc, argv, "VvhnL46t:c:w:H:p:", long_options, &option_index); | 187 | c = getopt_long (argc, argv, "VvhnL46t:c:w:H:p:", longopts, &option); |
| 188 | 188 | ||
| 189 | if (c == -1 || c == EOF) | 189 | if (c == -1 || c == EOF) |
| 190 | break; | 190 | break; |
diff --git a/plugins/check_procs.c b/plugins/check_procs.c index 1894b281..5313b977 100644 --- a/plugins/check_procs.c +++ b/plugins/check_procs.c | |||
| @@ -278,8 +278,8 @@ process_arguments (int argc, char **argv) | |||
| 278 | int c = 1; | 278 | int c = 1; |
| 279 | char *user; | 279 | char *user; |
| 280 | struct passwd *pw; | 280 | struct passwd *pw; |
| 281 | int option_index = 0; | 281 | int option = 0; |
| 282 | static struct option long_options[] = { | 282 | static struct option longopts[] = { |
| 283 | {"warning", required_argument, 0, 'w'}, | 283 | {"warning", required_argument, 0, 'w'}, |
| 284 | {"critical", required_argument, 0, 'c'}, | 284 | {"critical", required_argument, 0, 'c'}, |
| 285 | {"metric", required_argument, 0, 'm'}, | 285 | {"metric", required_argument, 0, 'm'}, |
| @@ -303,7 +303,7 @@ process_arguments (int argc, char **argv) | |||
| 303 | 303 | ||
| 304 | while (1) { | 304 | while (1) { |
| 305 | c = getopt_long (argc, argv, "Vvht:c:w:p:s:u:C:a:z:r:m:P:", | 305 | c = getopt_long (argc, argv, "Vvht:c:w:p:s:u:C:a:z:r:m:P:", |
| 306 | long_options, &option_index); | 306 | longopts, &option); |
| 307 | 307 | ||
| 308 | if (c == -1 || c == EOF) | 308 | if (c == -1 || c == EOF) |
| 309 | break; | 309 | break; |
| @@ -362,7 +362,7 @@ process_arguments (int argc, char **argv) | |||
| 362 | if (statopts) | 362 | if (statopts) |
| 363 | break; | 363 | break; |
| 364 | else | 364 | else |
| 365 | statopts = strdup(optarg); | 365 | statopts = optarg; |
| 366 | asprintf (&fmt, _("%s%sSTATE = %s"), fmt, (options ? ", " : ""), statopts); | 366 | asprintf (&fmt, _("%s%sSTATE = %s"), fmt, (options ? ", " : ""), statopts); |
| 367 | options |= STAT; | 367 | options |= STAT; |
| 368 | break; | 368 | break; |
| @@ -397,7 +397,7 @@ process_arguments (int argc, char **argv) | |||
| 397 | if (prog) | 397 | if (prog) |
| 398 | break; | 398 | break; |
| 399 | else | 399 | else |
| 400 | prog = strdup(optarg); | 400 | prog = optarg; |
| 401 | asprintf (&fmt, _("%s%scommand name '%s'"), fmt, (options ? ", " : ""), | 401 | asprintf (&fmt, _("%s%scommand name '%s'"), fmt, (options ? ", " : ""), |
| 402 | prog); | 402 | prog); |
| 403 | options |= PROG; | 403 | options |= PROG; |
| @@ -406,7 +406,7 @@ process_arguments (int argc, char **argv) | |||
| 406 | if (args) | 406 | if (args) |
| 407 | break; | 407 | break; |
| 408 | else | 408 | else |
| 409 | args = strdup(optarg); | 409 | args = optarg; |
| 410 | asprintf (&fmt, _("%s%sargs '%s'"), fmt, (options ? ", " : ""), args); | 410 | asprintf (&fmt, _("%s%sargs '%s'"), fmt, (options ? ", " : ""), args); |
| 411 | options |= ARGS; | 411 | options |= ARGS; |
| 412 | break; | 412 | break; |
diff --git a/plugins/check_radius.c b/plugins/check_radius.c index 714de58c..1e4fff7a 100644 --- a/plugins/check_radius.c +++ b/plugins/check_radius.c | |||
| @@ -21,79 +21,21 @@ const char *revision = "$Revision$"; | |||
| 21 | const char *copyright = "2000-2003"; | 21 | const char *copyright = "2000-2003"; |
| 22 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | 22 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
| 23 | 23 | ||
| 24 | #include "config.h" | ||
| 25 | #include "common.h" | 24 | #include "common.h" |
| 26 | #include "utils.h" | 25 | #include "utils.h" |
| 26 | #include "netutils.h" | ||
| 27 | #include <radiusclient.h> | 27 | #include <radiusclient.h> |
| 28 | 28 | ||
| 29 | void | ||
| 30 | print_usage (void) | ||
| 31 | { | ||
| 32 | printf ("\ | ||
| 33 | Usage: %s -H host -F config_file -u username -p password [-P port]\n\ | ||
| 34 | [-t timeout] [-r retries] [-e expect]\n", progname); | ||
| 35 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 36 | } | ||
| 37 | |||
| 38 | void | ||
| 39 | print_help (void) | ||
| 40 | { | ||
| 41 | char *myport; | ||
| 42 | asprintf (&myport, "%d", PW_AUTH_UDP_PORT); | ||
| 43 | |||
| 44 | print_revision (progname, revision); | ||
| 45 | |||
| 46 | printf (_("Copyright (c) 1999 Robert August Vincent II\n")); | ||
| 47 | printf (_(COPYRIGHT), copyright, email); | ||
| 48 | |||
| 49 | printf(_("Tests to see if a radius server is accepting connections.\n\n")); | ||
| 50 | |||
| 51 | print_usage (); | ||
| 52 | |||
| 53 | printf (_(UT_HELP_VRSN)); | ||
| 54 | |||
| 55 | printf (_(UT_HOST_PORT), 'P', myport); | ||
| 56 | |||
| 57 | printf (_("\ | ||
| 58 | -u, --username=STRING\n\ | ||
| 59 | The user to authenticate\n\ | ||
| 60 | -p, --password=STRING\n\ | ||
| 61 | Password for autentication (SECURITY RISK)\n\ | ||
| 62 | -F, --filename=STRING\n\ | ||
| 63 | Configuration file\n\ | ||
| 64 | -e, --expect=STRING\n\ | ||
| 65 | Response string to expect from the server\n\ | ||
| 66 | -r, --retries=INTEGER\n\ | ||
| 67 | Number of times to retry a failed connection\n")); | ||
| 68 | |||
| 69 | printf (_(UT_TIMEOUT), timeout_interval); | ||
| 70 | |||
| 71 | printf (_("\n\ | ||
| 72 | This plugin tests a radius server to see if it is accepting connections.\n\ | ||
| 73 | \n\ | ||
| 74 | The server to test must be specified in the invocation, as well as a user\n\ | ||
| 75 | name and password. A configuration file may also be present. The format of\n\ | ||
| 76 | the configuration file is described in the radiusclient library sources.\n\n")); | ||
| 77 | |||
| 78 | printf (_("\ | ||
| 79 | The password option presents a substantial security issue because the\n\ | ||
| 80 | password can be determined by careful watching of the command line in\n\ | ||
| 81 | a process listing. This risk is exacerbated because nagios will\n\ | ||
| 82 | run the plugin at regular prdictable intervals. Please be sure that\n\ | ||
| 83 | the password used does not allow access to sensitive system resources,\n\ | ||
| 84 | otherwise compormise could occur.\n")); | ||
| 85 | |||
| 86 | printf (_(UT_SUPPORT)); | ||
| 87 | } | ||
| 88 | |||
| 89 | int process_arguments (int, char **); | 29 | int process_arguments (int, char **); |
| 30 | void print_help (void); | ||
| 31 | void print_usage (void); | ||
| 90 | 32 | ||
| 91 | char *server = NULL; | 33 | char *server = NULL; |
| 92 | char *username = NULL; | 34 | char *username = NULL; |
| 93 | char *password = NULL; | 35 | char *password = NULL; |
| 94 | char *expect = NULL; | 36 | char *expect = NULL; |
| 95 | char *config_file = NULL; | 37 | char *config_file = NULL; |
| 96 | int port = PW_AUTH_UDP_PORT; | 38 | unsigned short port = PW_AUTH_UDP_PORT; |
| 97 | int retries = 1; | 39 | int retries = 1; |
| 98 | int verbose = FALSE; | 40 | int verbose = FALSE; |
| 99 | ENV *env = NULL; | 41 | ENV *env = NULL; |
| @@ -159,12 +101,14 @@ main (int argc, char **argv) | |||
| 159 | SEND_DATA data; | 101 | SEND_DATA data; |
| 160 | int result; | 102 | int result; |
| 161 | UINT4 client_id; | 103 | UINT4 client_id; |
| 104 | char *str; | ||
| 162 | 105 | ||
| 163 | if (process_arguments (argc, argv) == ERROR) | 106 | if (process_arguments (argc, argv) == ERROR) |
| 164 | usage (_("Could not parse arguments\n")); | 107 | usage (_("Could not parse arguments\n")); |
| 165 | 108 | ||
| 109 | str = strdup ("dictionary"); | ||
| 166 | if ((config_file && rc_read_config (config_file)) || | 110 | if ((config_file && rc_read_config (config_file)) || |
| 167 | rc_read_dictionary (rc_conf_str ("dictionary"))) | 111 | rc_read_dictionary (rc_conf_str (str))) |
| 168 | die (STATE_UNKNOWN, _("Config file error")); | 112 | die (STATE_UNKNOWN, _("Config file error")); |
| 169 | 113 | ||
| 170 | service = PW_AUTHENTICATE_ONLY; | 114 | service = PW_AUTHENTICATE_ONLY; |
| @@ -184,8 +128,8 @@ main (int argc, char **argv) | |||
| 184 | if (rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == | 128 | if (rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == |
| 185 | NULL) return (ERROR_RC); | 129 | NULL) return (ERROR_RC); |
| 186 | 130 | ||
| 187 | rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, timeout_interval, | 131 | rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, (int)timeout_interval, |
| 188 | retries); | 132 | retries); |
| 189 | 133 | ||
| 190 | result = rc_send_server (&data, msg); | 134 | result = rc_send_server (&data, msg); |
| 191 | rc_avpair_free (data.send_pairs); | 135 | rc_avpair_free (data.send_pairs); |
| @@ -199,7 +143,7 @@ main (int argc, char **argv) | |||
| 199 | if (result == BADRESP_RC) | 143 | if (result == BADRESP_RC) |
| 200 | die (STATE_WARNING, _("Auth Failed")); | 144 | die (STATE_WARNING, _("Auth Failed")); |
| 201 | if (expect && !strstr (msg, expect)) | 145 | if (expect && !strstr (msg, expect)) |
| 202 | die (STATE_WARNING, msg); | 146 | die (STATE_WARNING, "%s", msg); |
| 203 | if (result == OK_RC) | 147 | if (result == OK_RC) |
| 204 | die (STATE_OK, _("Auth OK")); | 148 | die (STATE_OK, _("Auth OK")); |
| 205 | return (0); | 149 | return (0); |
| @@ -213,8 +157,8 @@ process_arguments (int argc, char **argv) | |||
| 213 | { | 157 | { |
| 214 | int c; | 158 | int c; |
| 215 | 159 | ||
| 216 | int option_index = 0; | 160 | int option = 0; |
| 217 | static struct option long_options[] = { | 161 | static struct option longopts[] = { |
| 218 | {"hostname", required_argument, 0, 'H'}, | 162 | {"hostname", required_argument, 0, 'H'}, |
| 219 | {"port", required_argument, 0, 'P'}, | 163 | {"port", required_argument, 0, 'P'}, |
| 220 | {"username", required_argument, 0, 'u'}, | 164 | {"username", required_argument, 0, 'u'}, |
| @@ -254,8 +198,8 @@ process_arguments (int argc, char **argv) | |||
| 254 | } | 198 | } |
| 255 | 199 | ||
| 256 | while (1) { | 200 | while (1) { |
| 257 | c = getopt_long (argc, argv, "+hVvH:P:F:u:p:t:r:e:", long_options, | 201 | c = getopt_long (argc, argv, "+hVvH:P:F:u:p:t:r:e:", longopts, |
| 258 | &option_index); | 202 | &option); |
| 259 | 203 | ||
| 260 | if (c == -1 || c == EOF || c == 1) | 204 | if (c == -1 || c == EOF || c == 1) |
| 261 | break; | 205 | break; |
| @@ -316,3 +260,71 @@ process_arguments (int argc, char **argv) | |||
| 316 | } | 260 | } |
| 317 | return OK; | 261 | return OK; |
| 318 | } | 262 | } |
| 263 | |||
| 264 | |||
| 265 | |||
| 266 | |||
| 267 | |||
| 268 | |||
| 269 | void | ||
| 270 | print_help (void) | ||
| 271 | { | ||
| 272 | char *myport; | ||
| 273 | asprintf (&myport, "%d", PW_AUTH_UDP_PORT); | ||
| 274 | |||
| 275 | print_revision (progname, revision); | ||
| 276 | |||
| 277 | printf (_("Copyright (c) 1999 Robert August Vincent II\n")); | ||
| 278 | printf (_(COPYRIGHT), copyright, email); | ||
| 279 | |||
| 280 | printf(_("Tests to see if a radius server is accepting connections.\n\n")); | ||
| 281 | |||
| 282 | print_usage (); | ||
| 283 | |||
| 284 | printf (_(UT_HELP_VRSN)); | ||
| 285 | |||
| 286 | printf (_(UT_HOST_PORT), 'P', myport); | ||
| 287 | |||
| 288 | printf (_("\ | ||
| 289 | -u, --username=STRING\n\ | ||
| 290 | The user to authenticate\n\ | ||
| 291 | -p, --password=STRING\n\ | ||
| 292 | Password for autentication (SECURITY RISK)\n\ | ||
| 293 | -F, --filename=STRING\n\ | ||
| 294 | Configuration file\n\ | ||
| 295 | -e, --expect=STRING\n\ | ||
| 296 | Response string to expect from the server\n\ | ||
| 297 | -r, --retries=INTEGER\n\ | ||
| 298 | Number of times to retry a failed connection\n")); | ||
| 299 | |||
| 300 | printf (_(UT_TIMEOUT), timeout_interval); | ||
| 301 | |||
| 302 | printf (_("\n\ | ||
| 303 | This plugin tests a radius server to see if it is accepting connections.\n\ | ||
| 304 | \n\ | ||
| 305 | The server to test must be specified in the invocation, as well as a user\n\ | ||
| 306 | name and password. A configuration file may also be present. The format of\n\ | ||
| 307 | the configuration file is described in the radiusclient library sources.\n\n")); | ||
| 308 | |||
| 309 | printf (_("\ | ||
| 310 | The password option presents a substantial security issue because the\n\ | ||
| 311 | password can be determined by careful watching of the command line in\n\ | ||
| 312 | a process listing. This risk is exacerbated because nagios will\n\ | ||
| 313 | run the plugin at regular prdictable intervals. Please be sure that\n\ | ||
| 314 | the password used does not allow access to sensitive system resources,\n\ | ||
| 315 | otherwise compormise could occur.\n")); | ||
| 316 | |||
| 317 | printf (_(UT_SUPPORT)); | ||
| 318 | } | ||
| 319 | |||
| 320 | |||
| 321 | |||
| 322 | |||
| 323 | void | ||
| 324 | print_usage (void) | ||
| 325 | { | ||
| 326 | printf ("\ | ||
| 327 | Usage: %s -H host -F config_file -u username -p password [-P port]\n\ | ||
| 328 | [-t timeout] [-r retries] [-e expect]\n", progname); | ||
| 329 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 330 | } | ||
diff --git a/plugins/check_real.c b/plugins/check_real.c index 9c9c3e0b..3e8475a7 100644 --- a/plugins/check_real.c +++ b/plugins/check_real.c | |||
| @@ -256,8 +256,8 @@ process_arguments (int argc, char **argv) | |||
| 256 | { | 256 | { |
| 257 | int c; | 257 | int c; |
| 258 | 258 | ||
| 259 | int option_index = 0; | 259 | int option = 0; |
| 260 | static struct option long_options[] = { | 260 | static struct option longopts[] = { |
| 261 | {"hostname", required_argument, 0, 'H'}, | 261 | {"hostname", required_argument, 0, 'H'}, |
| 262 | {"IPaddress", required_argument, 0, 'I'}, | 262 | {"IPaddress", required_argument, 0, 'I'}, |
| 263 | {"expect", required_argument, 0, 'e'}, | 263 | {"expect", required_argument, 0, 'e'}, |
| @@ -285,8 +285,8 @@ process_arguments (int argc, char **argv) | |||
| 285 | } | 285 | } |
| 286 | 286 | ||
| 287 | while (1) { | 287 | while (1) { |
| 288 | c = getopt_long (argc, argv, "+hVI:H:e:u:p:w:c:t:", long_options, | 288 | c = getopt_long (argc, argv, "+hVI:H:e:u:p:w:c:t:", longopts, |
| 289 | &option_index); | 289 | &option); |
| 290 | 290 | ||
| 291 | if (c == -1 || c == EOF) | 291 | if (c == -1 || c == EOF) |
| 292 | break; | 292 | break; |
| @@ -297,15 +297,15 @@ process_arguments (int argc, char **argv) | |||
| 297 | if (server_address) | 297 | if (server_address) |
| 298 | break; | 298 | break; |
| 299 | else if (is_host (optarg)) | 299 | else if (is_host (optarg)) |
| 300 | server_address = strdup(optarg); | 300 | server_address = optarg; |
| 301 | else | 301 | else |
| 302 | usage (_("Invalid host name\n")); | 302 | usage (_("Invalid host name\n")); |
| 303 | break; | 303 | break; |
| 304 | case 'e': /* string to expect in response header */ | 304 | case 'e': /* string to expect in response header */ |
| 305 | server_expect = strdup(optarg); | 305 | server_expect = optarg; |
| 306 | break; | 306 | break; |
| 307 | case 'u': /* server URL */ | 307 | case 'u': /* server URL */ |
| 308 | server_url = strdup(optarg); | 308 | server_url = optarg; |
| 309 | break; | 309 | break; |
| 310 | case 'p': /* port */ | 310 | case 'p': /* port */ |
| 311 | if (is_intpos (optarg)) { | 311 | if (is_intpos (optarg)) { |
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index c4e427a6..41ed5f38 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c | |||
| @@ -183,8 +183,8 @@ process_arguments (int argc, char **argv) | |||
| 183 | { | 183 | { |
| 184 | int c; | 184 | int c; |
| 185 | 185 | ||
| 186 | int option_index = 0; | 186 | int option = 0; |
| 187 | static struct option long_options[] = { | 187 | static struct option longopts[] = { |
| 188 | {"hostname", required_argument, 0, 'H'}, | 188 | {"hostname", required_argument, 0, 'H'}, |
| 189 | {"expect", required_argument, 0, 'e'}, | 189 | {"expect", required_argument, 0, 'e'}, |
| 190 | {"critical", required_argument, 0, 'c'}, | 190 | {"critical", required_argument, 0, 'c'}, |
| @@ -216,7 +216,7 @@ process_arguments (int argc, char **argv) | |||
| 216 | 216 | ||
| 217 | while (1) { | 217 | while (1) { |
| 218 | c = getopt_long (argc, argv, "+hVv46t:p:f:e:c:w:H:C:", | 218 | c = getopt_long (argc, argv, "+hVv46t:p:f:e:c:w:H:C:", |
| 219 | long_options, &option_index); | 219 | longopts, &option); |
| 220 | 220 | ||
| 221 | if (c == -1 || c == EOF) | 221 | if (c == -1 || c == EOF) |
| 222 | break; | 222 | break; |
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index e22d8a0b..af8f1198 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c | |||
| @@ -84,7 +84,7 @@ int errcode, excode; | |||
| 84 | #endif | 84 | #endif |
| 85 | 85 | ||
| 86 | char *server_address = NULL; | 86 | char *server_address = NULL; |
| 87 | char *community = DEFAULT_COMMUNITY; | 87 | char *community = NULL; |
| 88 | char *authpriv = NULL; | 88 | char *authpriv = NULL; |
| 89 | char *proto = NULL; | 89 | char *proto = NULL; |
| 90 | char *seclevel = NULL; | 90 | char *seclevel = NULL; |
| @@ -92,17 +92,17 @@ char *secname = NULL; | |||
| 92 | char *authproto = NULL; | 92 | char *authproto = NULL; |
| 93 | char *authpasswd = NULL; | 93 | char *authpasswd = NULL; |
| 94 | char *privpasswd = NULL; | 94 | char *privpasswd = NULL; |
| 95 | char *oid = ""; | 95 | char *oid; |
| 96 | char *label = "SNMP"; | 96 | char *label; |
| 97 | char *units = ""; | 97 | char *units; |
| 98 | char *port = DEFAULT_PORT; | 98 | char *port; |
| 99 | char string_value[MAX_INPUT_BUFFER] = ""; | 99 | char string_value[MAX_INPUT_BUFFER] = ""; |
| 100 | char **labels = NULL; | 100 | char **labels = NULL; |
| 101 | char **unitv = NULL; | 101 | char **unitv = NULL; |
| 102 | int nlabels = 0; | 102 | size_t nlabels = 0; |
| 103 | int labels_size = 8; | 103 | size_t labels_size = 8; |
| 104 | int nunits = 0; | 104 | size_t nunits = 0; |
| 105 | int unitv_size = 8; | 105 | size_t unitv_size = 8; |
| 106 | int verbose = FALSE; | 106 | int verbose = FALSE; |
| 107 | unsigned long lower_warn_lim[MAX_OIDS]; | 107 | unsigned long lower_warn_lim[MAX_OIDS]; |
| 108 | unsigned long upper_warn_lim[MAX_OIDS]; | 108 | unsigned long upper_warn_lim[MAX_OIDS]; |
| @@ -112,9 +112,9 @@ unsigned long response_value[MAX_OIDS]; | |||
| 112 | int check_warning_value = FALSE; | 112 | int check_warning_value = FALSE; |
| 113 | int check_critical_value = FALSE; | 113 | int check_critical_value = FALSE; |
| 114 | int eval_method[MAX_OIDS]; | 114 | int eval_method[MAX_OIDS]; |
| 115 | char *delimiter = DEFAULT_DELIMITER; | 115 | char *delimiter; |
| 116 | char *output_delim = DEFAULT_OUTPUT_DELIMITER; | 116 | char *output_delim; |
| 117 | char *miblist = DEFAULT_MIBLIST; | 117 | char *miblist; |
| 118 | 118 | ||
| 119 | 119 | ||
| 120 | 120 | ||
| @@ -131,8 +131,8 @@ main (int argc, char **argv) | |||
| 131 | char input_buffer[MAX_INPUT_BUFFER]; | 131 | char input_buffer[MAX_INPUT_BUFFER]; |
| 132 | char *command_line = NULL; | 132 | char *command_line = NULL; |
| 133 | char *response = NULL; | 133 | char *response = NULL; |
| 134 | char *outbuff = ""; | 134 | char *outbuff; |
| 135 | char *output = ""; | 135 | char *output; |
| 136 | char *ptr = NULL; | 136 | char *ptr = NULL; |
| 137 | char *p2 = NULL; | 137 | char *p2 = NULL; |
| 138 | char *show = NULL; | 138 | char *show = NULL; |
| @@ -143,6 +143,16 @@ main (int argc, char **argv) | |||
| 143 | eval_method[i] = CHECK_UNDEF; | 143 | eval_method[i] = CHECK_UNDEF; |
| 144 | i = 0; | 144 | i = 0; |
| 145 | 145 | ||
| 146 | oid = strdup (""); | ||
| 147 | label = strdup ("SNMP"); | ||
| 148 | units = strdup (""); | ||
| 149 | port = strdup (DEFAULT_PORT); | ||
| 150 | outbuff = strdup (""); | ||
| 151 | output = strdup (""); | ||
| 152 | delimiter = strdup (DEFAULT_DELIMITER); | ||
| 153 | output_delim = strdup (DEFAULT_OUTPUT_DELIMITER); | ||
| 154 | miblist = strdup (DEFAULT_MIBLIST); | ||
| 155 | |||
| 146 | if (process_arguments (argc, argv) == ERROR) | 156 | if (process_arguments (argc, argv) == ERROR) |
| 147 | usage (_("Incorrect arguments supplied\n")); | 157 | usage (_("Incorrect arguments supplied\n")); |
| 148 | 158 | ||
| @@ -287,7 +297,7 @@ main (int argc, char **argv) | |||
| 287 | result = max_state (result, iresult); | 297 | result = max_state (result, iresult); |
| 288 | 298 | ||
| 289 | /* Prepend a label for this OID if there is one */ | 299 | /* Prepend a label for this OID if there is one */ |
| 290 | if (nlabels > 1 && i < nlabels && labels[i] != NULL) | 300 | if (nlabels > (size_t)1 && (size_t)i < nlabels && labels[i] != NULL) |
| 291 | asprintf (&outbuff, "%s%s%s %s%s%s", outbuff, | 301 | asprintf (&outbuff, "%s%s%s %s%s%s", outbuff, |
| 292 | (i == 0) ? " " : output_delim, | 302 | (i == 0) ? " " : output_delim, |
| 293 | labels[i], mark (iresult), show, mark (iresult)); | 303 | labels[i], mark (iresult), show, mark (iresult)); |
| @@ -296,7 +306,7 @@ main (int argc, char **argv) | |||
| 296 | mark (iresult), show, mark (iresult)); | 306 | mark (iresult), show, mark (iresult)); |
| 297 | 307 | ||
| 298 | /* Append a unit string for this OID if there is one */ | 308 | /* Append a unit string for this OID if there is one */ |
| 299 | if (nunits > 0 && i < nunits && unitv[i] != NULL) | 309 | if (nunits > (size_t)0 && (size_t)i < nunits && unitv[i] != NULL) |
| 300 | asprintf (&outbuff, "%s %s", outbuff, unitv[i]); | 310 | asprintf (&outbuff, "%s %s", outbuff, unitv[i]); |
| 301 | 311 | ||
| 302 | i++; | 312 | i++; |
| @@ -341,8 +351,8 @@ process_arguments (int argc, char **argv) | |||
| 341 | int c = 1; | 351 | int c = 1; |
| 342 | int j = 0, jj = 0, ii = 0; | 352 | int j = 0, jj = 0, ii = 0; |
| 343 | 353 | ||
| 344 | int option_index = 0; | 354 | int option = 0; |
| 345 | static struct option long_options[] = { | 355 | static struct option longopts[] = { |
| 346 | STD_LONG_OPTS, | 356 | STD_LONG_OPTS, |
| 347 | {"community", required_argument, 0, 'C'}, | 357 | {"community", required_argument, 0, 'C'}, |
| 348 | {"oid", required_argument, 0, 'o'}, | 358 | {"oid", required_argument, 0, 'o'}, |
| @@ -381,7 +391,7 @@ process_arguments (int argc, char **argv) | |||
| 381 | 391 | ||
| 382 | while (1) { | 392 | while (1) { |
| 383 | c = getopt_long (argc, argv, "hvVt:c:w:H:C:o:e:E:d:D:s:R:r:l:u:p:m:P:L:U:a:A:X:", | 393 | c = getopt_long (argc, argv, "hvVt:c:w:H:C:o:e:E:d:D:s:R:r:l:u:p:m:P:L:U:a:A:X:", |
| 384 | long_options, &option_index); | 394 | longopts, &option); |
| 385 | 395 | ||
| 386 | if (c == -1 || c == EOF) | 396 | if (c == -1 || c == EOF) |
| 387 | break; | 397 | break; |
| @@ -401,34 +411,34 @@ process_arguments (int argc, char **argv) | |||
| 401 | 411 | ||
| 402 | /* Connection info */ | 412 | /* Connection info */ |
| 403 | case 'C': /* group or community */ | 413 | case 'C': /* group or community */ |
| 404 | community = strscpy (community, optarg); | 414 | community = optarg; |
| 405 | break; | 415 | break; |
| 406 | case 'H': /* Host or server */ | 416 | case 'H': /* Host or server */ |
| 407 | server_address = strscpy (server_address, optarg); | 417 | server_address = optarg; |
| 408 | break; | 418 | break; |
| 409 | case 'p': /* TCP port number */ | 419 | case 'p': /* TCP port number */ |
| 410 | port = strscpy(port, optarg); | 420 | port = optarg; |
| 411 | break; | 421 | break; |
| 412 | case 'm': /* List of MIBS */ | 422 | case 'm': /* List of MIBS */ |
| 413 | miblist = strscpy(miblist, optarg); | 423 | miblist = optarg; |
| 414 | break; | 424 | break; |
| 415 | case 'P': /* SNMP protocol version */ | 425 | case 'P': /* SNMP protocol version */ |
| 416 | proto = strscpy(proto, optarg); | 426 | proto = optarg; |
| 417 | break; | 427 | break; |
| 418 | case 'L': /* security level */ | 428 | case 'L': /* security level */ |
| 419 | seclevel = strscpy(seclevel,optarg); | 429 | seclevel = optarg; |
| 420 | break; | 430 | break; |
| 421 | case 'U': /* security username */ | 431 | case 'U': /* security username */ |
| 422 | secname = strscpy(secname, optarg); | 432 | secname = optarg; |
| 423 | break; | 433 | break; |
| 424 | case 'a': /* auth protocol */ | 434 | case 'a': /* auth protocol */ |
| 425 | asprintf (&authproto, optarg); | 435 | authproto = optarg; |
| 426 | break; | 436 | break; |
| 427 | case 'A': /* auth passwd */ | 437 | case 'A': /* auth passwd */ |
| 428 | authpasswd = strscpy(authpasswd, optarg); | 438 | authpasswd = optarg; |
| 429 | break; | 439 | break; |
| 430 | case 'X': /* priv passwd */ | 440 | case 'X': /* priv passwd */ |
| 431 | privpasswd = strscpy(privpasswd, optarg); | 441 | privpasswd = optarg; |
| 432 | break; | 442 | break; |
| 433 | case 't': /* timeout period */ | 443 | case 't': /* timeout period */ |
| 434 | if (!is_integer (optarg)) | 444 | if (!is_integer (optarg)) |
| @@ -585,7 +595,10 @@ process_arguments (int argc, char **argv) | |||
| 585 | } | 595 | } |
| 586 | 596 | ||
| 587 | if (server_address == NULL) | 597 | if (server_address == NULL) |
| 588 | asprintf (&server_address, argv[optind]); | 598 | server_address = argv[optind]; |
| 599 | |||
| 600 | if (community == NULL) | ||
| 601 | community = strdup (DEFAULT_COMMUNITY); | ||
| 589 | 602 | ||
| 590 | return validate_arguments (); | 603 | return validate_arguments (); |
| 591 | } | 604 | } |
diff --git a/plugins/check_ssh.c b/plugins/check_ssh.c index fdded583..26709a7d 100644 --- a/plugins/check_ssh.c +++ b/plugins/check_ssh.c | |||
| @@ -70,8 +70,8 @@ process_arguments (int argc, char **argv) | |||
| 70 | { | 70 | { |
| 71 | int c; | 71 | int c; |
| 72 | 72 | ||
| 73 | int option_index = 0; | 73 | int option = 0; |
| 74 | static struct option long_options[] = { | 74 | static struct option longopts[] = { |
| 75 | {"help", no_argument, 0, 'h'}, | 75 | {"help", no_argument, 0, 'h'}, |
| 76 | {"version", no_argument, 0, 'V'}, | 76 | {"version", no_argument, 0, 'V'}, |
| 77 | {"host", required_argument, 0, 'H'}, | 77 | {"host", required_argument, 0, 'H'}, |
| @@ -91,7 +91,7 @@ process_arguments (int argc, char **argv) | |||
| 91 | strcpy (argv[c], "-t"); | 91 | strcpy (argv[c], "-t"); |
| 92 | 92 | ||
| 93 | while (1) { | 93 | while (1) { |
| 94 | c = getopt_long (argc, argv, "+Vhv46t:H:p:", long_options, &option_index); | 94 | c = getopt_long (argc, argv, "+Vhv46t:H:p:", longopts, &option); |
| 95 | 95 | ||
| 96 | if (c == -1 || c == EOF) | 96 | if (c == -1 || c == EOF) |
| 97 | break; | 97 | break; |
diff --git a/plugins/check_swap.c b/plugins/check_swap.c index b92694d9..a4e7e814 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c | |||
| @@ -34,7 +34,7 @@ const char *revision = "$Revision$"; | |||
| 34 | const char *copyright = "2000-2003"; | 34 | const char *copyright = "2000-2003"; |
| 35 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | 35 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
| 36 | 36 | ||
| 37 | int check_swap (int usp, int free_swap); | 37 | int check_swap (int usp, long unsigned int free_swap); |
| 38 | int process_arguments (int argc, char **argv); | 38 | int process_arguments (int argc, char **argv); |
| 39 | int validate_arguments (void); | 39 | int validate_arguments (void); |
| 40 | void print_usage (void); | 40 | void print_usage (void); |
| @@ -51,58 +51,6 @@ int allswaps; | |||
| 51 | int sun = 0; /* defined by compiler if it is a sun solaris system */ | 51 | int sun = 0; /* defined by compiler if it is a sun solaris system */ |
| 52 | #endif | 52 | #endif |
| 53 | 53 | ||
| 54 | void | ||
| 55 | print_usage (void) | ||
| 56 | { | ||
| 57 | printf (_("Usage:\n\ | ||
| 58 | %s [-a] -w <used_percentage>%% -c <used_percentage>%%\n\ | ||
| 59 | %s [-a] -w <bytes_free> -c <bytes_free>\n\ | ||
| 60 | %s (-h | --help) for detailed help\n\ | ||
| 61 | %s (-V | --version) for version information\n"), | ||
| 62 | progname, progname, progname, progname); | ||
| 63 | } | ||
| 64 | |||
| 65 | |||
| 66 | |||
| 67 | |||
| 68 | |||
| 69 | void | ||
| 70 | print_help (void) | ||
| 71 | { | ||
| 72 | print_revision (progname, revision); | ||
| 73 | |||
| 74 | printf (_(COPYRIGHT), copyright, email); | ||
| 75 | |||
| 76 | printf (_("Check swap space on local server.\n\n")); | ||
| 77 | |||
| 78 | print_usage (); | ||
| 79 | |||
| 80 | printf (_(UT_HELP_VRSN)); | ||
| 81 | |||
| 82 | printf (_("\n\ | ||
| 83 | -w, --warning=INTEGER\n\ | ||
| 84 | Exit with WARNING status if less than INTEGER bytes of swap space are free\n\ | ||
| 85 | -w, --warning=PERCENT%%\n\ | ||
| 86 | Exit with WARNING status if less than PERCENT of swap space has been used\n\ | ||
| 87 | -c, --critical=INTEGER\n\ | ||
| 88 | Exit with CRITICAL status if less than INTEGER bytes of swap space are free\n\ | ||
| 89 | -c, --critical=PERCENT%%\n\ | ||
| 90 | Exit with CRITCAL status if less than PERCENT of swap space has been used\n\ | ||
| 91 | -a, --allswaps\n\ | ||
| 92 | Conduct comparisons for all swap partitions, one by one\n")); | ||
| 93 | |||
| 94 | #ifdef sun | ||
| 95 | printf (_("\n\ | ||
| 96 | On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\ | ||
| 97 | Will be discrepencies because swap -s counts allocated swap and includes\n\ | ||
| 98 | real memory\n")); | ||
| 99 | #endif | ||
| 100 | |||
| 101 | support (); | ||
| 102 | } | ||
| 103 | |||
| 104 | |||
| 105 | |||
| 106 | int | 54 | int |
| 107 | main (int argc, char **argv) | 55 | main (int argc, char **argv) |
| 108 | { | 56 | { |
| @@ -121,7 +69,9 @@ main (int argc, char **argv) | |||
| 121 | FILE *fp; | 69 | FILE *fp; |
| 122 | #endif | 70 | #endif |
| 123 | char str[32]; | 71 | char str[32]; |
| 124 | char *status = ""; | 72 | char *status; |
| 73 | |||
| 74 | status = strdup(""); | ||
| 125 | 75 | ||
| 126 | if (process_arguments (argc, argv) != OK) | 76 | if (process_arguments (argc, argv) != OK) |
| 127 | usage (_("Invalid command arguments supplied\n")); | 77 | usage (_("Invalid command arguments supplied\n")); |
| @@ -233,16 +183,16 @@ main (int argc, char **argv) | |||
| 233 | 183 | ||
| 234 | 184 | ||
| 235 | int | 185 | int |
| 236 | check_swap (int usp, int free_swap) | 186 | check_swap (int usp, long unsigned int free_swap) |
| 237 | { | 187 | { |
| 238 | int result = STATE_UNKNOWN; | 188 | int result = STATE_UNKNOWN; |
| 239 | if (usp >= 0 && usp >= (100.0 - crit_percent)) | 189 | if (usp >= 0 && usp >= (100.0 - crit_percent)) |
| 240 | result = STATE_CRITICAL; | 190 | result = STATE_CRITICAL; |
| 241 | else if (crit_size > 0 && (unsigned)free_swap <= crit_size) | 191 | else if (crit_size > 0 && free_swap <= crit_size) |
| 242 | result = STATE_CRITICAL; | 192 | result = STATE_CRITICAL; |
| 243 | else if (usp >= 0 && usp >= (100.0 - warn_percent)) | 193 | else if (usp >= 0 && usp >= (100.0 - warn_percent)) |
| 244 | result = STATE_WARNING; | 194 | result = STATE_WARNING; |
| 245 | else if (warn_size > 0 && (unsigned)free_swap <= warn_size) | 195 | else if (warn_size > 0 && free_swap <= warn_size) |
| 246 | result = STATE_WARNING; | 196 | result = STATE_WARNING; |
| 247 | else if (usp >= 0.0) | 197 | else if (usp >= 0.0) |
| 248 | result = STATE_OK; | 198 | result = STATE_OK; |
| @@ -258,8 +208,8 @@ process_arguments (int argc, char **argv) | |||
| 258 | int wc = 0; /* warning counter */ | 208 | int wc = 0; /* warning counter */ |
| 259 | int cc = 0; /* critical counter */ | 209 | int cc = 0; /* critical counter */ |
| 260 | 210 | ||
| 261 | int option_index = 0; | 211 | int option = 0; |
| 262 | static struct option long_options[] = { | 212 | static struct option longopts[] = { |
| 263 | {"warning", required_argument, 0, 'w'}, | 213 | {"warning", required_argument, 0, 'w'}, |
| 264 | {"critical", required_argument, 0, 'c'}, | 214 | {"critical", required_argument, 0, 'c'}, |
| 265 | {"allswaps", no_argument, 0, 'a'}, | 215 | {"allswaps", no_argument, 0, 'a'}, |
| @@ -273,7 +223,7 @@ process_arguments (int argc, char **argv) | |||
| 273 | return ERROR; | 223 | return ERROR; |
| 274 | 224 | ||
| 275 | while (1) { | 225 | while (1) { |
| 276 | c = getopt_long (argc, argv, "+?Vvhac:w:", long_options, &option_index); | 226 | c = getopt_long (argc, argv, "+?Vvhac:w:", longopts, &option); |
| 277 | 227 | ||
| 278 | if (c == -1 || c == EOF) | 228 | if (c == -1 || c == EOF) |
| 279 | break; | 229 | break; |
| @@ -296,7 +246,6 @@ process_arguments (int argc, char **argv) | |||
| 296 | else { | 246 | else { |
| 297 | usage (_("Warning threshold must be integer or percentage!\n")); | 247 | usage (_("Warning threshold must be integer or percentage!\n")); |
| 298 | } | 248 | } |
| 299 | wc++; | ||
| 300 | case 'c': /* critical time threshold */ | 249 | case 'c': /* critical time threshold */ |
| 301 | if (is_intnonneg (optarg)) { | 250 | if (is_intnonneg (optarg)) { |
| 302 | crit_size = atoi (optarg); | 251 | crit_size = atoi (optarg); |
| @@ -314,7 +263,6 @@ process_arguments (int argc, char **argv) | |||
| 314 | else { | 263 | else { |
| 315 | usage (_("Critical threshold must be integer or percentage!\n")); | 264 | usage (_("Critical threshold must be integer or percentage!\n")); |
| 316 | } | 265 | } |
| 317 | cc++; | ||
| 318 | case 'a': /* all swap */ | 266 | case 'a': /* all swap */ |
| 319 | allswaps = TRUE; | 267 | allswaps = TRUE; |
| 320 | break; | 268 | break; |
| @@ -377,3 +325,57 @@ validate_arguments (void) | |||
| 377 | } | 325 | } |
| 378 | return OK; | 326 | return OK; |
| 379 | } | 327 | } |
| 328 | |||
| 329 | |||
| 330 | |||
| 331 | |||
| 332 | |||
| 333 | |||
| 334 | void | ||
| 335 | print_help (void) | ||
| 336 | { | ||
| 337 | print_revision (progname, revision); | ||
| 338 | |||
| 339 | printf (_(COPYRIGHT), copyright, email); | ||
| 340 | |||
| 341 | printf (_("Check swap space on local server.\n\n")); | ||
| 342 | |||
| 343 | print_usage (); | ||
| 344 | |||
| 345 | printf (_(UT_HELP_VRSN)); | ||
| 346 | |||
| 347 | printf (_("\n\ | ||
| 348 | -w, --warning=INTEGER\n\ | ||
| 349 | Exit with WARNING status if less than INTEGER bytes of swap space are free\n\ | ||
| 350 | -w, --warning=PERCENT%%\n\ | ||
| 351 | Exit with WARNING status if less than PERCENT of swap space has been used\n\ | ||
| 352 | -c, --critical=INTEGER\n\ | ||
| 353 | Exit with CRITICAL status if less than INTEGER bytes of swap space are free\n\ | ||
| 354 | -c, --critical=PERCENT%%\n\ | ||
| 355 | Exit with CRITCAL status if less than PERCENT of swap space has been used\n\ | ||
| 356 | -a, --allswaps\n\ | ||
| 357 | Conduct comparisons for all swap partitions, one by one\n")); | ||
| 358 | |||
| 359 | #ifdef sun | ||
| 360 | printf (_("\n\ | ||
| 361 | On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\ | ||
| 362 | Will be discrepencies because swap -s counts allocated swap and includes\n\ | ||
| 363 | real memory\n")); | ||
| 364 | #endif | ||
| 365 | |||
| 366 | printf (_(UT_SUPPORT)); | ||
| 367 | } | ||
| 368 | |||
| 369 | |||
| 370 | |||
| 371 | |||
| 372 | void | ||
| 373 | print_usage (void) | ||
| 374 | { | ||
| 375 | printf (_("Usage:\n\ | ||
| 376 | %s [-a] -w <used_percentage>%% -c <used_percentage>%%\n\ | ||
| 377 | %s [-a] -w <bytes_free> -c <bytes_free>\n\ | ||
| 378 | %s (-h | --help) for detailed help\n\ | ||
| 379 | %s (-V | --version) for version information\n"), | ||
| 380 | progname, progname, progname, progname); | ||
| 381 | } | ||
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c index fc0572cc..bf8ed8ca 100644 --- a/plugins/check_tcp.c +++ b/plugins/check_tcp.c | |||
| @@ -345,8 +345,8 @@ process_arguments (int argc, char **argv) | |||
| 345 | { | 345 | { |
| 346 | int c; | 346 | int c; |
| 347 | 347 | ||
| 348 | int option_index = 0; | 348 | int option = 0; |
| 349 | static struct option long_options[] = { | 349 | static struct option longopts[] = { |
| 350 | {"hostname", required_argument, 0, 'H'}, | 350 | {"hostname", required_argument, 0, 'H'}, |
| 351 | {"critical-time", required_argument, 0, 'c'}, | 351 | {"critical-time", required_argument, 0, 'c'}, |
| 352 | {"warning-time", required_argument, 0, 'w'}, | 352 | {"warning-time", required_argument, 0, 'w'}, |
| @@ -391,7 +391,7 @@ process_arguments (int argc, char **argv) | |||
| 391 | 391 | ||
| 392 | while (1) { | 392 | while (1) { |
| 393 | c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:", | 393 | c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:", |
| 394 | long_options, &option_index); | 394 | longopts, &option); |
| 395 | 395 | ||
| 396 | if (c == -1 || c == EOF || c == 1) | 396 | if (c == -1 || c == EOF || c == 1) |
| 397 | break; | 397 | break; |
diff --git a/plugins/check_time.c b/plugins/check_time.c index 36b622fb..49e7c87d 100644 --- a/plugins/check_time.c +++ b/plugins/check_time.c | |||
| @@ -138,8 +138,8 @@ process_arguments (int argc, char **argv) | |||
| 138 | { | 138 | { |
| 139 | int c; | 139 | int c; |
| 140 | 140 | ||
| 141 | int option_index = 0; | 141 | int option = 0; |
| 142 | static struct option long_options[] = { | 142 | static struct option longopts[] = { |
| 143 | {"hostname", required_argument, 0, 'H'}, | 143 | {"hostname", required_argument, 0, 'H'}, |
| 144 | {"warning-variance", required_argument, 0, 'w'}, | 144 | {"warning-variance", required_argument, 0, 'w'}, |
| 145 | {"critical-variance", required_argument, 0, 'c'}, | 145 | {"critical-variance", required_argument, 0, 'c'}, |
| @@ -169,8 +169,8 @@ process_arguments (int argc, char **argv) | |||
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | while (1) { | 171 | while (1) { |
| 172 | c = getopt_long (argc, argv, "hVH:w:c:W:C:p:t:", long_options, | 172 | c = getopt_long (argc, argv, "hVH:w:c:W:C:p:t:", longopts, |
| 173 | &option_index); | 173 | &option); |
| 174 | 174 | ||
| 175 | if (c == -1 || c == EOF) | 175 | if (c == -1 || c == EOF) |
| 176 | break; | 176 | break; |
| @@ -307,7 +307,7 @@ This plugin will check the time on the specified host.\n\n")); | |||
| 307 | 307 | ||
| 308 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); | 308 | printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT); |
| 309 | 309 | ||
| 310 | support (); | 310 | printf (_(UT_SUPPORT)); |
| 311 | } | 311 | } |
| 312 | 312 | ||
| 313 | 313 | ||
diff --git a/plugins/check_udp.c b/plugins/check_udp.c index bd5de586..5aaf3a79 100644 --- a/plugins/check_udp.c +++ b/plugins/check_udp.c | |||
| @@ -105,8 +105,8 @@ process_arguments (int argc, char **argv) | |||
| 105 | { | 105 | { |
| 106 | int c; | 106 | int c; |
| 107 | 107 | ||
| 108 | int option_index = 0; | 108 | int option = 0; |
| 109 | static struct option long_options[] = { | 109 | static struct option longopts[] = { |
| 110 | {"hostname", required_argument, 0, 'H'}, | 110 | {"hostname", required_argument, 0, 'H'}, |
| 111 | {"critical", required_argument, 0, 'c'}, | 111 | {"critical", required_argument, 0, 'c'}, |
| 112 | {"warning", required_argument, 0, 'w'}, | 112 | {"warning", required_argument, 0, 'w'}, |
| @@ -133,7 +133,7 @@ process_arguments (int argc, char **argv) | |||
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | while (1) { | 135 | while (1) { |
| 136 | c = getopt_long (argc, argv, "+hVvH:e:s:c:w:t:p:", long_options, &option_index); | 136 | c = getopt_long (argc, argv, "+hVvH:e:s:c:w:t:p:", longopts, &option); |
| 137 | 137 | ||
| 138 | if (c == -1 || c == EOF || c == 1) | 138 | if (c == -1 || c == EOF || c == 1) |
| 139 | break; | 139 | break; |
diff --git a/plugins/check_ups.c b/plugins/check_ups.c index fcee7477..7e7b36a4 100644 --- a/plugins/check_ups.c +++ b/plugins/check_ups.c | |||
| @@ -400,8 +400,8 @@ process_arguments (int argc, char **argv) | |||
| 400 | { | 400 | { |
| 401 | int c; | 401 | int c; |
| 402 | 402 | ||
| 403 | int option_index = 0; | 403 | int option = 0; |
| 404 | static struct option long_options[] = { | 404 | static struct option longopts[] = { |
| 405 | {"hostname", required_argument, 0, 'H'}, | 405 | {"hostname", required_argument, 0, 'H'}, |
| 406 | {"ups", required_argument, 0, 'u'}, | 406 | {"ups", required_argument, 0, 'u'}, |
| 407 | {"port", required_argument, 0, 'p'}, | 407 | {"port", required_argument, 0, 'p'}, |
| @@ -427,8 +427,8 @@ process_arguments (int argc, char **argv) | |||
| 427 | } | 427 | } |
| 428 | 428 | ||
| 429 | while (1) { | 429 | while (1) { |
| 430 | c = getopt_long (argc, argv, "hVH:u:p:v:c:w:t:", long_options, | 430 | c = getopt_long (argc, argv, "hVH:u:p:v:c:w:t:", longopts, |
| 431 | &option_index); | 431 | &option); |
| 432 | 432 | ||
| 433 | if (c == -1 || c == EOF) | 433 | if (c == -1 || c == EOF) |
| 434 | break; | 434 | break; |
diff --git a/plugins/check_users.c b/plugins/check_users.c index 9e182015..9f308bc3 100644 --- a/plugins/check_users.c +++ b/plugins/check_users.c | |||
| @@ -107,8 +107,8 @@ process_arguments (int argc, char **argv) | |||
| 107 | { | 107 | { |
| 108 | int c; | 108 | int c; |
| 109 | 109 | ||
| 110 | int option_index = 0; | 110 | int option = 0; |
| 111 | static struct option long_options[] = { | 111 | static struct option longopts[] = { |
| 112 | {"critical", required_argument, 0, 'c'}, | 112 | {"critical", required_argument, 0, 'c'}, |
| 113 | {"warning", required_argument, 0, 'w'}, | 113 | {"warning", required_argument, 0, 'w'}, |
| 114 | {"version", no_argument, 0, 'V'}, | 114 | {"version", no_argument, 0, 'V'}, |
| @@ -120,7 +120,7 @@ process_arguments (int argc, char **argv) | |||
| 120 | usage ("\n"); | 120 | usage ("\n"); |
| 121 | 121 | ||
| 122 | while (1) { | 122 | while (1) { |
| 123 | c = getopt_long (argc, argv, "+hVvc:w:", long_options, &option_index); | 123 | c = getopt_long (argc, argv, "+hVvc:w:", longopts, &option); |
| 124 | 124 | ||
| 125 | if (c == -1 || c == EOF || c == 1) | 125 | if (c == -1 || c == EOF || c == 1) |
| 126 | break; | 126 | break; |
diff --git a/plugins/negate.c b/plugins/negate.c index 3ef5ee76..c24658af 100644 --- a/plugins/negate.c +++ b/plugins/negate.c | |||
| @@ -14,84 +14,12 @@ | |||
| 14 | along with this program; if not, write to the Free Software | 14 | along with this program; if not, write to the Free Software |
| 15 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 15 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 16 | 16 | ||
| 17 | ******************************************************************************/ | ||
| 18 | |||
| 19 | const char *progname = "negate"; | ||
| 20 | const char *revision = "$Revision$"; | ||
| 21 | const char *copyright = "2002-2003"; | ||
| 22 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | ||
| 23 | |||
| 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 (); | ||
| 50 | |||
| 51 | printf (_(UT_HELP_VRSN)); | ||
| 52 | |||
| 53 | printf (_(UT_TIMEOUT), DEFAULT_TIMEOUT); | ||
| 54 | |||
| 55 | printf (_("\ | ||
| 56 | [keep timeout than the plugin timeout to retain CRITICAL status]\n")); | ||
| 57 | |||
| 58 | printf (_("\ | ||
| 59 | negate \"/usr/local/nagios/libexec/check_ping -H host\"\n\ | ||
| 60 | Run check_ping and invert result. Must use full path to plugin\n\ | ||
| 61 | negate \"/usr/local/nagios/libexec/check_procs -a 'vi negate.c'\"\n\ | ||
| 62 | Use single quotes if you need to retain spaces\n")); | ||
| 63 | |||
| 64 | printf (_("\ | ||
| 65 | This plugin is a wrapper to take the output of another plugin and invert it.\n\ | ||
| 66 | If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL.\n\ | ||
| 67 | If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK.\n\ | ||
| 68 | Otherwise, the output state of the wrapped plugin is unchanged.\n")); | ||
| 69 | |||
| 70 | printf (_(UT_SUPPORT)); | ||
| 71 | } | ||
| 72 | |||
| 73 | char *command_line; | ||
| 74 | |||
| 75 | int process_arguments (int, char **); | ||
| 76 | int validate_arguments (void); | ||
| 77 | /****************************************************************************** | ||
| 78 | |||
| 79 | The (psuedo?)literate programming XML is contained within \@\@\- <XML> \-\@\@ | ||
| 80 | tags in the comments. With in the tags, the XML is assembled sequentially. | ||
| 81 | You can define entities in tags. You also have all the #defines available as | ||
| 82 | entities. | ||
| 83 | |||
| 84 | Please note that all tags must be lowercase to use the DocBook XML DTD. | ||
| 85 | |||
| 86 | @@-<article> | 17 | @@-<article> |
| 87 | 18 | ||
| 88 | <sect1> | 19 | <sect1> |
| 89 | <title>Quick Reference</title> | 20 | <title>Quick Reference</title> |
| 90 | <!-- The refentry forms a manpage --> | ||
| 91 | <refentry> | 21 | <refentry> |
| 92 | <refmeta> | 22 | <refmeta><manvolnum>5<manvolnum></refmeta> |
| 93 | <manvolnum>5<manvolnum> | ||
| 94 | </refmeta> | ||
| 95 | <refnamdiv> | 23 | <refnamdiv> |
| 96 | <refname>&progname;</refname> | 24 | <refname>&progname;</refname> |
| 97 | <refpurpose>&SUMMARY;</refpurpose> | 25 | <refpurpose>&SUMMARY;</refpurpose> |
| @@ -119,19 +47,33 @@ Please note that all tags must be lowercase to use the DocBook XML DTD. | |||
| 119 | <itemizedlist> | 47 | <itemizedlist> |
| 120 | <listitem>Add option to do regex substitution in output text</listitem> | 48 | <listitem>Add option to do regex substitution in output text</listitem> |
| 121 | </itemizedlist> | 49 | </itemizedlist> |
| 122 | </sect2> | 50 | </sect2>-@@ |
| 123 | |||
| 124 | 51 | ||
| 125 | <sect2> | ||
| 126 | <title>Functions</title> | ||
| 127 | -@@ | ||
| 128 | ******************************************************************************/ | 52 | ******************************************************************************/ |
| 129 | 53 | ||
| 54 | const char *progname = "negate"; | ||
| 55 | const char *revision = "$Revision$"; | ||
| 56 | const char *copyright = "2002-2003"; | ||
| 57 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | ||
| 58 | |||
| 59 | #define DEFAULT_TIMEOUT 9 | ||
| 60 | |||
| 61 | #include "common.h" | ||
| 62 | #include "utils.h" | ||
| 63 | #include "popen.h" | ||
| 64 | |||
| 65 | char *command_line; | ||
| 66 | |||
| 67 | int process_arguments (int, char **); | ||
| 68 | int validate_arguments (void); | ||
| 69 | void print_help (void); | ||
| 70 | void print_usage (void); | ||
| 71 | |||
| 130 | int | 72 | int |
| 131 | main (int argc, char **argv) | 73 | main (int argc, char **argv) |
| 132 | { | 74 | { |
| 133 | int found = 0, result = STATE_UNKNOWN; | 75 | int found = 0, result = STATE_UNKNOWN; |
| 134 | char input_buffer[MAX_INPUT_BUFFER]; | 76 | char *buf; |
| 135 | 77 | ||
| 136 | if (process_arguments (argc, argv) == ERROR) | 78 | if (process_arguments (argc, argv) == ERROR) |
| 137 | usage (_("Could not parse arguments\n")); | 79 | usage (_("Could not parse arguments\n")); |
| @@ -151,27 +93,22 @@ main (int argc, char **argv) | |||
| 151 | printf (_("Could not open stderr for %s\n"), command_line); | 93 | printf (_("Could not open stderr for %s\n"), command_line); |
| 152 | } | 94 | } |
| 153 | 95 | ||
| 154 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { | 96 | buf = malloc(MAX_INPUT_BUFFER); |
| 97 | while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) { | ||
| 155 | found++; | 98 | found++; |
| 156 | if (strchr (input_buffer, '\n')) { | 99 | printf ("%s", buf); |
| 157 | input_buffer[strcspn (input_buffer, "\n")] = 0; | ||
| 158 | printf ("%s\n", input_buffer); | ||
| 159 | } | ||
| 160 | else { | ||
| 161 | printf ("%s\n", input_buffer); | ||
| 162 | } | ||
| 163 | } | 100 | } |
| 164 | 101 | ||
| 165 | if (!found) | 102 | if (!found) |
| 166 | die (STATE_UNKNOWN,\ | 103 | die (STATE_UNKNOWN, |
| 167 | _("%s problem - No data recieved from host\nCMD: %s\n"),\ | 104 | _("%s problem - No data recieved from host\nCMD: %s\n"),\ |
| 168 | argv[0], command_line); | 105 | argv[0], command_line); |
| 169 | 106 | ||
| 170 | /* close the pipe */ | 107 | /* close the pipe */ |
| 171 | result = spclose (child_process); | 108 | result = spclose (child_process); |
| 172 | 109 | ||
| 173 | /* WARNING if output found on stderr */ | 110 | /* WARNING if output found on stderr */ |
| 174 | if (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) | 111 | if (fgets (buf, MAX_INPUT_BUFFER - 1, child_stderr)) |
| 175 | result = max_state (result, STATE_WARNING); | 112 | result = max_state (result, STATE_WARNING); |
| 176 | 113 | ||
| 177 | /* close stderr */ | 114 | /* close stderr */ |
| @@ -189,6 +126,9 @@ main (int argc, char **argv) | |||
| 189 | 126 | ||
| 190 | /****************************************************************************** | 127 | /****************************************************************************** |
| 191 | @@- | 128 | @@- |
| 129 | <sect2> | ||
| 130 | <title>Functions</title> | ||
| 131 | |||
| 192 | <sect3> | 132 | <sect3> |
| 193 | <title>process_arguments</title> | 133 | <title>process_arguments</title> |
| 194 | 134 | ||
| @@ -196,7 +136,7 @@ main (int argc, char **argv) | |||
| 196 | variables.</para> | 136 | variables.</para> |
| 197 | 137 | ||
| 198 | <para>Aside from the standard 'help' and 'version' options, there | 138 | <para>Aside from the standard 'help' and 'version' options, there |
| 199 | is a only a 'timeout' option.No validation is currently done.</para> | 139 | is a only a 'timeout' option.</para> |
| 200 | 140 | ||
| 201 | </sect3> | 141 | </sect3> |
| 202 | -@@ | 142 | -@@ |
| @@ -208,8 +148,8 @@ process_arguments (int argc, char **argv) | |||
| 208 | { | 148 | { |
| 209 | int c; | 149 | int c; |
| 210 | 150 | ||
| 211 | int option_index = 0; | 151 | int option = 0; |
| 212 | static struct option long_options[] = { | 152 | static struct option longopts[] = { |
| 213 | {"help", no_argument, 0, 'h'}, | 153 | {"help", no_argument, 0, 'h'}, |
| 214 | {"version", no_argument, 0, 'V'}, | 154 | {"version", no_argument, 0, 'V'}, |
| 215 | {"timeout", required_argument, 0, 't'}, | 155 | {"timeout", required_argument, 0, 't'}, |
| @@ -218,7 +158,7 @@ process_arguments (int argc, char **argv) | |||
| 218 | 158 | ||
| 219 | while (1) { | 159 | while (1) { |
| 220 | c = getopt_long (argc, argv, "+hVt:", | 160 | c = getopt_long (argc, argv, "+hVt:", |
| 221 | long_options, &option_index); | 161 | longopts, &option); |
| 222 | 162 | ||
| 223 | if (c == -1 || c == EOF) | 163 | if (c == -1 || c == EOF) |
| 224 | break; | 164 | break; |
| @@ -226,16 +166,19 @@ process_arguments (int argc, char **argv) | |||
| 226 | switch (c) { | 166 | switch (c) { |
| 227 | case '?': /* help */ | 167 | case '?': /* help */ |
| 228 | usage3 (_("Unknown argument"), optopt); | 168 | usage3 (_("Unknown argument"), optopt); |
| 169 | break; | ||
| 229 | case 'h': /* help */ | 170 | case 'h': /* help */ |
| 230 | print_help (); | 171 | print_help (); |
| 231 | exit (EXIT_SUCCESS); | 172 | exit (EXIT_SUCCESS); |
| 173 | break; | ||
| 232 | case 'V': /* version */ | 174 | case 'V': /* version */ |
| 233 | print_revision (progname, revision); | 175 | print_revision (progname, revision); |
| 234 | exit (EXIT_SUCCESS); | 176 | exit (EXIT_SUCCESS); |
| 235 | case 't': /* timeout period */ | 177 | case 't': /* timeout period */ |
| 236 | if (!is_integer (optarg)) | 178 | if (!is_integer (optarg)) |
| 237 | usage2 (_("Timeout Interval must be an integer"), optarg); | 179 | usage2 (_("Timeout Interval must be an integer"), optarg); |
| 238 | timeout_interval = atoi (optarg); | 180 | else |
| 181 | timeout_interval = atoi (optarg); | ||
| 239 | break; | 182 | break; |
| 240 | } | 183 | } |
| 241 | } | 184 | } |
| @@ -267,7 +210,6 @@ validate_arguments () | |||
| 267 | return ERROR; | 210 | return ERROR; |
| 268 | return STATE_OK; | 211 | return STATE_OK; |
| 269 | } | 212 | } |
| 270 | |||
| 271 | 213 | ||
| 272 | /****************************************************************************** | 214 | /****************************************************************************** |
| 273 | @@- | 215 | @@- |
| @@ -276,3 +218,55 @@ validate_arguments () | |||
| 276 | </article> | 218 | </article> |
| 277 | -@@ | 219 | -@@ |
| 278 | ******************************************************************************/ | 220 | ******************************************************************************/ |
| 221 | |||
| 222 | |||
| 223 | |||
| 224 | |||
| 225 | |||
| 226 | |||
| 227 | void | ||
| 228 | print_help (void) | ||
| 229 | { | ||
| 230 | print_revision (progname, revision); | ||
| 231 | |||
| 232 | printf (_(COPYRIGHT), copyright, email); | ||
| 233 | |||
| 234 | printf (_("\ | ||
| 235 | Negates the status of a plugin (returns OK for CRITICAL, and vice-versa).\n\ | ||
| 236 | \n")); | ||
| 237 | |||
| 238 | print_usage (); | ||
| 239 | |||
| 240 | printf (_(UT_HELP_VRSN)); | ||
| 241 | |||
| 242 | printf (_(UT_TIMEOUT), DEFAULT_TIMEOUT); | ||
| 243 | |||
| 244 | printf (_("\ | ||
| 245 | [keep timeout than the plugin timeout to retain CRITICAL status]\n")); | ||
| 246 | |||
| 247 | printf (_("\ | ||
| 248 | negate \"/usr/local/nagios/libexec/check_ping -H host\"\n\ | ||
| 249 | Run check_ping and invert result. Must use full path to plugin\n\ | ||
| 250 | negate \"/usr/local/nagios/libexec/check_procs -a 'vi negate.c'\"\n\ | ||
| 251 | Use single quotes if you need to retain spaces\n")); | ||
| 252 | |||
| 253 | printf (_("\ | ||
| 254 | This plugin is a wrapper to take the output of another plugin and invert it.\n\ | ||
| 255 | If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL.\n\ | ||
| 256 | If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK.\n\ | ||
| 257 | Otherwise, the output state of the wrapped plugin is unchanged.\n")); | ||
| 258 | |||
| 259 | printf (_(UT_SUPPORT)); | ||
| 260 | } | ||
| 261 | |||
| 262 | |||
| 263 | |||
| 264 | |||
| 265 | |||
| 266 | void | ||
| 267 | print_usage (void) | ||
| 268 | { | ||
| 269 | printf (_("Usage: %s [-t timeout] <definition of wrapped plugin>\n"), | ||
| 270 | progname); | ||
| 271 | printf (_(UT_HLP_VRS), progname, progname); | ||
| 272 | } | ||
diff --git a/plugins/popen.c b/plugins/popen.c index 98ba085b..05fd0ab9 100644 --- a/plugins/popen.c +++ b/plugins/popen.c | |||
| @@ -18,8 +18,7 @@ int spclose(FILE *); | |||
| 18 | * | 18 | * |
| 19 | ******************************************************************************/ | 19 | ******************************************************************************/ |
| 20 | 20 | ||
| 21 | #include <config.h> | 21 | #include "common.h" |
| 22 | #include <common.h> | ||
| 23 | 22 | ||
| 24 | /* extern so plugin has pid to kill exec'd process on timeouts */ | 23 | /* extern so plugin has pid to kill exec'd process on timeouts */ |
| 25 | extern int timeout_interval; | 24 | extern int timeout_interval; |
diff --git a/plugins/urlize.c b/plugins/urlize.c index 12fb3ec9..f4bc67b3 100644 --- a/plugins/urlize.c +++ b/plugins/urlize.c | |||
| @@ -1,41 +1,20 @@ | |||
| 1 | /****************************************************************************** | 1 | /****************************************************************************** |
| 2 | * | 2 | |
| 3 | * urlize.c | 3 | This program is free software; you can redistribute it and/or modify |
| 4 | * | 4 | it under the terms of the GNU General Public License as published by |
| 5 | * Program: plugin wrapper for Nagios | 5 | the Free Software Foundation; either version 2 of the License, or |
| 6 | * License: GPL | 6 | (at your option) any later version. |
| 7 | * Copyright (c) 2000 Karl DeBisschop (kdebiss@alum.mit.edu) | 7 | |
| 8 | * | 8 | This program is distributed in the hope that it will be useful, |
| 9 | * Last Modified: $Date$ | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * 2000-06-01 Karl DeBisschop <karl@debisschop.net> | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * Written based of concept in urlize.pl | 11 | GNU General Public License for more details. |
| 12 | * | 12 | |
| 13 | * Usage: urlize <url> <plugin> <arg1> ... <argN> | 13 | You should have received a copy of the GNU General Public License |
| 14 | * | 14 | along with this program; if not, write to the Free Software |
| 15 | * Description: | 15 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 16 | * | 16 | |
| 17 | * This plugin wraps the text output of another command (plugin) in HTML | 17 | ******************************************************************************/ |
| 18 | * <A> tags, thus displaying the plugin output in as a clickable link in | ||
| 19 | * the Nagios status screen. The return status is the same as the plugin | ||
| 20 | * invoked by urlize | ||
| 21 | * | ||
| 22 | * License Information: | ||
| 23 | * | ||
| 24 | * This program is free software; you can redistribute it and/or modify | ||
| 25 | * it under the terms of the GNU General Public License as published by | ||
| 26 | * the Free Software Foundation; either version 2 of the License, or | ||
| 27 | * (at your option) any later version. | ||
| 28 | * | ||
| 29 | * This program is distributed in the hope that it will be useful, | ||
| 30 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 31 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 32 | * GNU General Public License for more details. | ||
| 33 | * | ||
| 34 | * You should have received a copy of the GNU General Public License | ||
| 35 | * along with this program; if not, write to the Free Software | ||
| 36 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 37 | * | ||
| 38 | *****************************************************************************/ | ||
| 39 | 18 | ||
| 40 | const char *progname = "urlize"; | 19 | const char *progname = "urlize"; |
| 41 | const char *revision = "$Revision$"; | 20 | const char *revision = "$Revision$"; |
| @@ -46,12 +25,101 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 46 | #include "utils.h" | 25 | #include "utils.h" |
| 47 | #include "popen.h" | 26 | #include "popen.h" |
| 48 | 27 | ||
| 49 | void | 28 | void print_help (void); |
| 50 | print_usage (void) | 29 | void print_usage (void); |
| 30 | |||
| 31 | int | ||
| 32 | main (int argc, char **argv) | ||
| 51 | { | 33 | { |
| 52 | printf (_("Usage:\n %s <url> <plugin> <arg1> ... <argN>\n"), progname); | 34 | int found = 0, result = STATE_UNKNOWN; |
| 35 | char *url = NULL; | ||
| 36 | char *cmd; | ||
| 37 | char *buf; | ||
| 38 | |||
| 39 | int c; | ||
| 40 | int option = 0; | ||
| 41 | static struct option longopts[] = { | ||
| 42 | {"help", no_argument, 0, 'h'}, | ||
| 43 | {"version", no_argument, 0, 'V'}, | ||
| 44 | {"url", required_argument, 0, 'u'}, | ||
| 45 | {0, 0, 0, 0} | ||
| 46 | }; | ||
| 47 | |||
| 48 | while (1) { | ||
| 49 | c = getopt_long (argc, argv, "+hVu:", longopts, &option); | ||
| 50 | |||
| 51 | if (c == -1 || c == EOF) | ||
| 52 | break; | ||
| 53 | |||
| 54 | switch (c) { | ||
| 55 | case 'h': /* help */ | ||
| 56 | print_help (); | ||
| 57 | exit (EXIT_SUCCESS); | ||
| 58 | break; | ||
| 59 | case 'V': /* version */ | ||
| 60 | print_revision (progname, revision); | ||
| 61 | exit (EXIT_SUCCESS); | ||
| 62 | break; | ||
| 63 | case 'u': | ||
| 64 | url = strdup (argv[optind]); | ||
| 65 | break; | ||
| 66 | case '?': | ||
| 67 | default: | ||
| 68 | usage3 (_("Unknown argument"), optopt); | ||
| 69 | break; | ||
| 70 | } | ||
| 71 | } | ||
| 72 | |||
| 73 | if (url == NULL) | ||
| 74 | url = strdup (argv[optind++]); | ||
| 75 | |||
| 76 | cmd = strdup (argv[optind++]); | ||
| 77 | for (c = optind; c < argc; c++) { | ||
| 78 | asprintf (&cmd, "%s %s", cmd, argv[c]); | ||
| 79 | } | ||
| 80 | |||
| 81 | child_process = spopen (cmd); | ||
| 82 | if (child_process == NULL) { | ||
| 83 | printf (_("Could not open pipe: %s\n"), cmd); | ||
| 84 | exit (STATE_UNKNOWN); | ||
| 85 | } | ||
| 86 | |||
| 87 | child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); | ||
| 88 | if (child_stderr == NULL) { | ||
| 89 | printf (_("Could not open stderr for %s\n"), cmd); | ||
| 90 | } | ||
| 91 | |||
| 92 | buf = malloc(MAX_INPUT_BUFFER); | ||
| 93 | printf ("<A href=\"%s\">", argv[1]); | ||
| 94 | while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) { | ||
| 95 | found++; | ||
| 96 | printf ("%s", buf); | ||
| 97 | } | ||
| 98 | |||
| 99 | if (!found) | ||
| 100 | die (STATE_UNKNOWN, | ||
| 101 | _("%s problem - No data recieved from host\nCMD: %s</A>\n"), | ||
| 102 | argv[0], cmd); | ||
| 103 | |||
| 104 | /* close the pipe */ | ||
| 105 | result = spclose (child_process); | ||
| 106 | |||
| 107 | /* WARNING if output found on stderr */ | ||
| 108 | if (fgets (buf, MAX_INPUT_BUFFER - 1, child_stderr)) | ||
| 109 | result = max_state (result, STATE_WARNING); | ||
| 110 | |||
| 111 | /* close stderr */ | ||
| 112 | (void) fclose (child_stderr); | ||
| 113 | |||
| 114 | printf ("</A>\n"); | ||
| 115 | return result; | ||
| 53 | } | 116 | } |
| 54 | 117 | ||
| 118 | |||
| 119 | |||
| 120 | |||
| 121 | |||
| 122 | |||
| 55 | void | 123 | void |
| 56 | print_help (void) | 124 | print_help (void) |
| 57 | { | 125 | { |
| @@ -81,80 +149,15 @@ the shell will remove the single quotes and urlize will see:\n\ | |||
| 81 | You probably want:\n\ | 149 | You probably want:\n\ |
| 82 | \n\ | 150 | \n\ |
| 83 | urlize http://example.com/ \"check_http -H example.com -r 'two words'\"\n")); | 151 | urlize http://example.com/ \"check_http -H example.com -r 'two words'\"\n")); |
| 84 | exit (STATE_OK); | ||
| 85 | } | ||
| 86 | |||
| 87 | int | ||
| 88 | main (int argc, char **argv) | ||
| 89 | { | ||
| 90 | int i = 0, found = 0, result = STATE_UNKNOWN; | ||
| 91 | char *cmd = NULL; | ||
| 92 | char input_buffer[MAX_INPUT_BUFFER]; | ||
| 93 | |||
| 94 | if (argc < 2) { | ||
| 95 | print_usage (); | ||
| 96 | exit (STATE_UNKNOWN); | ||
| 97 | } | ||
| 98 | |||
| 99 | if (!strcmp (argv[1], "-h") || !strcmp (argv[1], "--help")) { | ||
| 100 | print_help (); | ||
| 101 | exit (STATE_OK); | ||
| 102 | } | ||
| 103 | |||
| 104 | if (!strcmp (argv[1], "-V") || !strcmp (argv[1], "--version")) { | ||
| 105 | print_revision (progname, revision); | ||
| 106 | exit (STATE_OK); | ||
| 107 | } | ||
| 108 | |||
| 109 | if (argc < 2) { | ||
| 110 | print_usage (); | ||
| 111 | exit (STATE_UNKNOWN); | ||
| 112 | } | ||
| 113 | |||
| 114 | asprintf (&cmd, "%s", argv[2]); | ||
| 115 | for (i = 3; i < argc; i++) { | ||
| 116 | asprintf (&cmd, "%s %s", cmd, argv[i]); | ||
| 117 | } | ||
| 118 | |||
| 119 | child_process = spopen (cmd); | ||
| 120 | if (child_process == NULL) { | ||
| 121 | printf (_("Could not open pipe: %s\n"), cmd); | ||
| 122 | exit (STATE_UNKNOWN); | ||
| 123 | } | ||
| 124 | |||
| 125 | child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); | ||
| 126 | if (child_stderr == NULL) { | ||
| 127 | printf (_("Could not open stderr for %s\n"), cmd); | ||
| 128 | } | ||
| 129 | |||
| 130 | printf ("<A href=\"%s\">", argv[1]); | ||
| 131 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { | ||
| 132 | found++; | ||
| 133 | if (index (input_buffer, '\n')) { | ||
| 134 | input_buffer[strcspn (input_buffer, "\n")] = 0; | ||
| 135 | printf ("%s", input_buffer); | ||
| 136 | } | ||
| 137 | else { | ||
| 138 | printf ("%s", input_buffer); | ||
| 139 | } | ||
| 140 | } | ||
| 141 | 152 | ||
| 142 | if (!found) { | 153 | printf (_(UT_SUPPORT)); |
| 143 | printf (_("%s problem - No data recieved from host\nCMD: %s</A>\n"), argv[0], | 154 | } |
| 144 | cmd); | ||
| 145 | exit (STATE_UNKNOWN); | ||
| 146 | } | ||
| 147 | 155 | ||
| 148 | /* close the pipe */ | ||
| 149 | result = spclose (child_process); | ||
| 150 | 156 | ||
| 151 | /* WARNING if output found on stderr */ | ||
| 152 | if (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) | ||
| 153 | result = max_state (result, STATE_WARNING); | ||
| 154 | 157 | ||
| 155 | /* close stderr */ | ||
| 156 | (void) fclose (child_stderr); | ||
| 157 | 158 | ||
| 158 | printf ("</A>\n"); | 159 | void |
| 159 | return result; | 160 | print_usage (void) |
| 161 | { | ||
| 162 | printf (_("Usage:\n %s <url> <plugin> <arg1> ... <argN>\n"), progname); | ||
| 160 | } | 163 | } |
