X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_load.c;h=ba1a59830ae8d0ec0d55b06ac33fca66cf024396;hb=3179e551c29af098567d5109dca56d834506fdce;hp=bedbf16e7082e4beac06434a4af6248e9601130b;hpb=44d249d12aca1cf0562ddeca4104b3462b4640a3;p=nagiosplug.git diff --git a/plugins/check_load.c b/plugins/check_load.c index bedbf16..ba1a598 100644 --- a/plugins/check_load.c +++ b/plugins/check_load.c @@ -44,7 +44,7 @@ #endif -#define PROGNAME "check_load" +const char *progname = "check_load"; int process_arguments (int argc, char **argv); int validate_arguments (void); @@ -54,6 +54,8 @@ void print_help (void); float wload1 = -1, wload5 = -1, wload15 = -1; float cload1 = -1, cload5 = -1, cload15 = -1; +char *status_line = ""; + int main (int argc, char **argv) { @@ -130,16 +132,16 @@ main (int argc, char **argv) #endif return STATE_UNKNOWN; } - printf ("load average: %.2f, %.2f, %.2f", la1, la5, la15); + asprintf(&status_line, "load average: %.2f, %.2f, %.2f", la1, la5, la15); if ((la1 >= cload1) || (la5 >= cload5) || (la15 >= cload15)) { - printf (" CRITICAL\n"); + printf("CRITICAL - %s\n", status_line); return STATE_CRITICAL; } if ((la1 >= wload1) || (la5 >= wload5) || (la15 >= wload15)) { - printf (" WARNING\n"); + printf ("WARNING - %s\n", status_line); return STATE_WARNING; } - printf ("\n"); + printf ("OK - %s\n", status_line); return STATE_OK; } @@ -151,9 +153,8 @@ main (int argc, char **argv) int process_arguments (int argc, char **argv) { - int c, i = 0; + int c = 0; -#ifdef HAVE_GETOPT_H int option_index = 0; static struct option long_options[] = { {"warning", required_argument, 0, 'w'}, @@ -162,19 +163,13 @@ process_arguments (int argc, char **argv) {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; -#endif - -#define OPTCHARS "Vhc:w:" if (argc < 2) return ERROR; while (1) { -#ifdef HAVE_GETOPT_H - c = getopt_long (argc, argv, OPTCHARS, long_options, &option_index); -#else - c = getopt (argc, argv, OPTCHARS); -#endif + c = getopt_long (argc, argv, "Vhc:w:", long_options, &option_index); + if (c == -1 || c == EOF) break; @@ -212,7 +207,7 @@ process_arguments (int argc, char **argv) usage ("Critical threshold must be float or float triplet!\n"); break; case 'V': /* version */ - print_revision (my_basename (argv[0]), "$Revision$"); + print_revision (progname, "$Revision$"); exit (STATE_OK); case 'h': /* help */ print_help (); @@ -226,32 +221,32 @@ process_arguments (int argc, char **argv) if (c == argc) return validate_arguments (); if (wload1 < 0 && is_nonnegative (argv[c])) - wload1 = atof (argv[c]); + wload1 = atof (argv[c++]); if (c == argc) return validate_arguments (); if (cload1 < 0 && is_nonnegative (argv[c])) - cload1 = atof (argv[c]); + cload1 = atof (argv[c++]); if (c == argc) return validate_arguments (); if (wload5 < 0 && is_nonnegative (argv[c])) - wload5 = atof (argv[c]); + wload5 = atof (argv[c++]); if (c == argc) return validate_arguments (); if (cload5 < 0 && is_nonnegative (argv[c])) - cload5 = atof (argv[c]); + cload5 = atof (argv[c++]); if (c == argc) return validate_arguments (); if (wload15 < 0 && is_nonnegative (argv[c])) - wload15 = atof (argv[c]); + wload15 = atof (argv[c++]); if (c == argc) return validate_arguments (); if (cload15 < 0 && is_nonnegative (argv[c])) - cload15 = atof (argv[c]); + cload15 = atof (argv[c++]); return validate_arguments (); } @@ -263,12 +258,24 @@ process_arguments (int argc, char **argv) int validate_arguments (void) { - if ((wload1 > cload1) || (wload5 > cload5) || (wload15 > cload15)) { - printf - ("Inconsistence in parameters: \"warning load\" greater than \"critical load\".\n"); - return STATE_UNKNOWN; - } - + if (wload1 < 0) + usage ("Warning threshold for 1-minute load average is not specified\n"); + if (wload5 < 0) + usage ("Warning threshold for 5-minute load average is not specified\n"); + if (wload15 < 0) + usage ("Warning threshold for 15-minute load average is not specified\n"); + if (cload1 < 0) + usage ("Critical threshold for 1-minute load average is not specified\n"); + if (cload5 < 0) + usage ("Critical threshold for 5-minute load average is not specified\n"); + if (cload15 < 0) + usage ("Critical threshold for 15-minute load average is not specified\n"); + if (wload1 > cload1) + usage ("Parameter inconsistency: 1-minute \"warning load\" greater than \"critical load\".\n"); + if (wload5 > cload5) + usage ("Parameter inconsistency: 5-minute \"warning load\" greater than \"critical load\".\n"); + if (wload15 > cload15) + usage ("Parameter inconsistency: 15-minute \"warning load\" greater than \"critical load\".\n"); return OK; } @@ -291,7 +298,7 @@ print_usage (void) void print_help (void) { - print_revision (PROGNAME, "$Revision$"); + print_revision (progname, "$Revision$"); printf ("Copyright (c) 1999 Felipe Gustavo de Almeida \n" "Copyright (c) 2000 Karl DeBisschop\n\n"