diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/check_disk.c | 130 |
1 files changed, 62 insertions, 68 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index f72841e8..485ae822 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
@@ -1,35 +1,58 @@ | |||
1 | /****************************************************************************** | 1 | /****************************************************************************** |
2 | * | 2 | * |
3 | * CHECK_DISK.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: Disk space plugin 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) 1999 Ethan Galstad (nagios@nagios.org) | 7 | * |
8 | * Copyright (c) 2000 Karl DeBisschop (kdebisschop@users.sourceforge.net) | 8 | * This program is distributed in the hope that it will be useful, |
9 | * | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | * $Id$ | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 | * | 11 | * GNU General Public License for more details. |
12 | * Description: | 12 | * |
13 | * | 13 | * You should have received a copy of the GNU General Public License |
14 | * This plugin will use the /bin/df command to check the free space on | 14 | * along with this program; if not, write to the Free Software |
15 | * currently mounted filesystems. If the percent used disk space is | 15 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
16 | * above <c_dfp>, a STATE_CRITICAL is returned. If the percent used | 16 | * |
17 | * disk space is above <w_dfp>, a STATE_WARNING is returned. If the | 17 | *****************************************************************************/ |
18 | * specified filesystem cannot be read, a STATE_CRITICAL is returned, | 18 | |
19 | * other errors with reading the output result in a STATE_UNKNOWN | 19 | const char *progname = "check_disk"; |
20 | * error. | 20 | const char *revision = "$Revision$"; |
21 | * | 21 | const char *copyright = "1999-2003"; |
22 | * Notes: | 22 | const char *authors = "Nagios Plugin Development Team"; |
23 | * - IRIX support added by Charlie Cook 4-16-1999 | 23 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
24 | * - Modifications by Karl DeBisschop 1999-11-24 | 24 | |
25 | * reformat code to 80 char screen width | 25 | const char *summary = "\ |
26 | * set STATE_WARNING if stderr is written or spclose status set | 26 | This plugin checks the amount of used disk space on a mounted file system\n\ |
27 | * set default result to STAT_UNKNOWN | 27 | and generates an alert if free space is less than one of the threshold values."; |
28 | * initailize usp to -1, eliminate 'found' variable | 28 | |
29 | * accept any filename/filesystem | 29 | const char *option_summary = "\ |
30 | * use sscanf, drop while loop | 30 | -w limit -c limit [-p path | -x device] [-t timeout] [-m] [-e]\n\ |
31 | * | 31 | [-v] [-q]"; |
32 | *****************************************************************************/ | 32 | |
33 | const char *options = "\ | ||
34 | -w, --warning=INTEGER\n\ | ||
35 | Exit with WARNING status if less than INTEGER kilobytes of disk are free\n\ | ||
36 | -w, --warning=PERCENT%%\n\ | ||
37 | Exit with WARNING status if less than PERCENT of disk space is free\n\ | ||
38 | -c, --critical=INTEGER\n\ | ||
39 | Exit with CRITICAL status if less than INTEGER kilobytes of disk are free\n\ | ||
40 | -c, --critical=PERCENT%%\n\ | ||
41 | Exit with CRITCAL status if less than PERCENT of disk space is free\n\ | ||
42 | -p, --path=PATH, --partition=PARTTION\n\ | ||
43 | Path or partition (checks all mounted partitions if unspecified)\n\ | ||
44 | -m, --mountpoint\n\ | ||
45 | Display the mountpoint instead of the partition\n\ | ||
46 | -x, --exclude_device=PATH\n\ | ||
47 | Ignore device (only works if -p unspecified)\n\ | ||
48 | -e, --errors-only\n\ | ||
49 | Display only devices/mountpoints with errors\n\ | ||
50 | -v, --verbose\n\ | ||
51 | Show details for command-line debugging (do not use with nagios server)\n\ | ||
52 | -h, --help\n\ | ||
53 | Print detailed help screen\n\ | ||
54 | -V, --version\n\ | ||
55 | Print version information\n"; | ||
33 | 56 | ||
34 | #include "common.h" | 57 | #include "common.h" |
35 | #include "popen.h" | 58 | #include "popen.h" |
@@ -44,17 +67,12 @@ | |||
44 | # include <inttypes.h> | 67 | # include <inttypes.h> |
45 | #endif | 68 | #endif |
46 | 69 | ||
47 | #define REVISION "$Revision$" | ||
48 | #define COPYRIGHT "2000-2002" | ||
49 | |||
50 | int process_arguments (int, char **); | 70 | int process_arguments (int, char **); |
51 | int validate_arguments (void); | 71 | int validate_arguments (void); |
52 | int check_disk (int usp, int free_disk); | 72 | int check_disk (int usp, int free_disk); |
53 | void print_help (void); | 73 | void print_help (void); |
54 | void print_usage (void); | 74 | void print_usage (void); |
55 | 75 | ||
56 | const char *progname = "check_disk"; | ||
57 | |||
58 | int w_df = -1; | 76 | int w_df = -1; |
59 | int c_df = -1; | 77 | int c_df = -1; |
60 | float w_dfp = -1.0; | 78 | float w_dfp = -1.0; |
@@ -327,7 +345,7 @@ process_arguments (int argc, char **argv) | |||
327 | exclude_device = optarg; | 345 | exclude_device = optarg; |
328 | break; | 346 | break; |
329 | case 'V': /* version */ | 347 | case 'V': /* version */ |
330 | print_revision (progname, REVISION); | 348 | print_revision (progname, revision); |
331 | exit (STATE_OK); | 349 | exit (STATE_OK); |
332 | case 'h': /* help */ | 350 | case 'h': /* help */ |
333 | print_help (); | 351 | print_help (); |
@@ -398,36 +416,12 @@ check_disk (usp, free_disk) | |||
398 | void | 416 | void |
399 | print_help (void) | 417 | print_help (void) |
400 | { | 418 | { |
401 | print_revision (progname, REVISION); | 419 | print_revision (progname, revision); |
402 | printf | 420 | printf ("Copyright (c) %s %s\n\t<%s>\n\n%s\n", |
403 | ("Copyright (c) 2000 Ethan Galstad/Karl DeBisschop\n\n" | 421 | copyright, authors, email, summary); |
404 | "This plugin will check the percent of used disk space on a mounted\n" | ||
405 | "file system and generate an alert if percentage is above one of the\n" | ||
406 | "threshold values.\n\n"); | ||
407 | print_usage (); | 422 | print_usage (); |
408 | printf | 423 | printf ("\nOptions:\n"); |
409 | ("\nOptions:\n" | 424 | printf (options); |
410 | " -w, --warning=INTEGER\n" | ||
411 | " Exit with WARNING status if less than INTEGER kilobytes of disk are free\n" | ||
412 | " -w, --warning=PERCENT%%\n" | ||
413 | " Exit with WARNING status if less than PERCENT of disk space is free\n" | ||
414 | " -c, --critical=INTEGER\n" | ||
415 | " Exit with CRITICAL status if less than INTEGER kilobytes of disk are free\n" | ||
416 | " -c, --critical=PERCENT%%\n" | ||
417 | " Exit with CRITCAL status if less than PERCENT of disk space is free\n" | ||
418 | " -p, --path=PATH, --partition=PARTTION\n" | ||
419 | " Path or partition (checks all mounted partitions if unspecified)\n" | ||
420 | " -m, --mountpoint\n" | ||
421 | " Display the mountpoint instead of the partition\n" | ||
422 | " -x, --exclude_device=PATH\n" | ||
423 | " Ignore device (only works if -p unspecified)\n" | ||
424 | " -e, --errors-only\n" | ||
425 | " Display only devices/mountpoints with errors\n" | ||
426 | " -v, --verbose\n" | ||
427 | " Show details for command-line debugging (do not use with nagios server)\n" | ||
428 | " -h, --help\n" | ||
429 | " Print detailed help screen\n" | ||
430 | " -V, --version\n" " Print version information\n\n"); | ||
431 | support (); | 425 | support (); |
432 | } | 426 | } |
433 | 427 | ||
@@ -435,7 +429,7 @@ void | |||
435 | print_usage (void) | 429 | print_usage (void) |
436 | { | 430 | { |
437 | printf | 431 | printf |
438 | ("Usage: %s -w limit -c limit [-p path | -x device] [-t timeout] [-m] [-e] [--verbose]\n" | 432 | ("Usage: %s %s\n" |
439 | " %s (-h|--help)\n" | 433 | " %s (-h|--help)\n" |
440 | " %s (-V|--version)\n", progname, progname, progname); | 434 | " %s (-V|--version)\n", progname, option_summary, progname, progname); |
441 | } | 435 | } |