diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | plugins/check_swap.c | 15 |
2 files changed, 16 insertions, 2 deletions
@@ -4,6 +4,7 @@ This file documents the major additions and syntax changes between releases. ENHANCEMENTS check_ide_smart now defaults to plugin output, original output appended with -v Extra-Opts are now enabled by default + check_swap now supports a configurable state when there is no swap FIXES Don't let e.g. check_http's -C option reset SSL version if e.g. -S 1 -C 5 is specified @@ -20,6 +21,8 @@ This file documents the major additions and syntax changes between releases. been disabled because they were broken State retention: the NAGIOS_PLUGIN_STATE_DIRECTORY environment variable has been renamed MP_STATE_DIRECTORY. The old variable will continue to work in v1.6.x + check_swap used to allow returning OK on a system without swap when only percent thresholds + were used. This is no longer the case and one must now use -n/--no-swap=<state> 1.5 2nd October 2013 ENHANCEMENTS diff --git a/plugins/check_swap.c b/plugins/check_swap.c index 04256adf..d8fc14f2 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c @@ -60,9 +60,10 @@ void print_help (void); int warn_percent = 0; int crit_percent = 0; float warn_size_bytes = 0; -float crit_size_bytes= 0; +float crit_size_bytes = 0; int verbose; int allswaps; +int no_swap_state = STATE_CRITICAL; int main (int argc, char **argv) @@ -372,6 +373,9 @@ main (int argc, char **argv) int check_swap (int usp, float free_swap_mb) { + + if (!free_swap_mb) return no_swap_state; + int result = STATE_UNKNOWN; float free_swap = free_swap_mb * (1024 * 1024); /* Convert back to bytes as warn and crit specified in bytes */ if (usp >= 0 && crit_percent != 0 && usp >= (100.0 - crit_percent)) @@ -400,6 +404,7 @@ process_arguments (int argc, char **argv) {"warning", required_argument, 0, 'w'}, {"critical", required_argument, 0, 'c'}, {"allswaps", no_argument, 0, 'a'}, + {"no-swap", required_argument, 0, 'n'}, {"verbose", no_argument, 0, 'v'}, {"version", no_argument, 0, 'V'}, {"help", no_argument, 0, 'h'}, @@ -410,7 +415,7 @@ process_arguments (int argc, char **argv) return ERROR; while (1) { - c = getopt_long (argc, argv, "+?Vvhac:w:", longopts, &option); + c = getopt_long (argc, argv, "+?Vvhac:w:n:", longopts, &option); if (c == -1 || c == EOF) break; @@ -455,6 +460,10 @@ process_arguments (int argc, char **argv) case 'a': /* all swap */ allswaps = TRUE; break; + case 'n': + if ((no_swap_state = mp_translate_state(optarg)) == ERROR) { + usage4 (_("no-swap result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); + } case 'v': /* verbose */ verbose++; break; @@ -541,6 +550,8 @@ print_help (void) printf (" %s\n", _("Exit with CRITCAL status if less than PERCENT of swap space is free")); printf (" %s\n", "-a, --allswaps"); printf (" %s\n", _("Conduct comparisons for all swap partitions, one by one")); + printf (" %s\n", "-n, --no-swap=<ok|warning|critical|unknown>"); + printf (" %s %s\n", _("Resulting state when there is no swap regardless of thresholds. Default:"), state_text(no_swap_state)); printf (UT_VERBOSE); printf ("\n"); |