diff options
Diffstat (limited to 'plugins/check_swap.c')
| -rw-r--r-- | plugins/check_swap.c | 126 |
1 files changed, 64 insertions, 62 deletions
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 | } | ||
