diff options
author | Thomas Guyot-Sionnest <dermoth@aei.ca> | 2014-01-23 03:17:55 -0500 |
---|---|---|
committer | Thomas Guyot-Sionnest <dermoth@aei.ca> | 2014-01-23 03:17:55 -0500 |
commit | d080c3ad9772c9d5ec64802f377d924ea8cd0a28 (patch) | |
tree | ae9e7e2b3d1565448ddf2cf62bdb07c161938bea | |
parent | fd20a72ad63c54baa32b89774a723b4c246056f7 (diff) | |
download | monitoring-plugins-d080c3a.tar.gz |
Disable SMART test commands in check_ide_smart
check_ide_smart could disable offline auto tests but could not re-enable
them. For this reason all SMART command modes have been disabled
The disabled commands are -0/--auto-off, -1/--auto-on and
-i/--immediate
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | plugins/check_ide_smart.c | 55 |
2 files changed, 26 insertions, 37 deletions
@@ -6,12 +6,16 @@ This file documents the major additions and syntax changes between releases. | |||
6 | 6 | ||
7 | FIXES | 7 | FIXES |
8 | Don't let e.g. check_http's -C option reset SSL version if e.g. -S 1 -C 5 is specified | 8 | Don't let e.g. check_http's -C option reset SSL version if e.g. -S 1 -C 5 is specified |
9 | check_ide_smart could disable offline auto tests but could not re-enable them. | ||
10 | For this reason all SMART command modes have been disabled. | ||
9 | 11 | ||
10 | WARNINGS | 12 | WARNINGS |
11 | check_procs now ignores its parent process to avoid unexpected results when invoked via certain shells | 13 | check_procs now ignores its parent process to avoid unexpected results when invoked via certain shells |
12 | utils.sh no longer defines ECHO | 14 | utils.sh no longer defines ECH |
13 | check_ide_smart -q (quiet) and -n (Nagios-compatile output) are now deprecated | 15 | check_ide_smart -q/--quiet and -n/--nagios (Nagios-compatile output) are now deprecated |
14 | but accepted for backward-compatibility | 16 | but accepted for backward-compatibility |
17 | check_ide_smart -0/--auto-off, -1/--auto-on and -i/--immediate: options have | ||
18 | been disabled because they were broken | ||
15 | 19 | ||
16 | 1.5 2nd October 2013 | 20 | 1.5 2nd October 2013 |
17 | ENHANCEMENTS | 21 | ENHANCEMENTS |
diff --git a/plugins/check_ide_smart.c b/plugins/check_ide_smart.c index c348cb7a..4eea72c4 100644 --- a/plugins/check_ide_smart.c +++ b/plugins/check_ide_smart.c | |||
@@ -178,7 +178,6 @@ int | |||
178 | main (int argc, char *argv[]) | 178 | main (int argc, char *argv[]) |
179 | { | 179 | { |
180 | char *device = NULL; | 180 | char *device = NULL; |
181 | int command = -1; | ||
182 | int o, longindex; | 181 | int o, longindex; |
183 | int retval = 0; | 182 | int retval = 0; |
184 | 183 | ||
@@ -221,13 +220,10 @@ main (int argc, char *argv[]) | |||
221 | fprintf (stderr, "%s\n", _("Nagios-compatible output is now always returned.")); | 220 | fprintf (stderr, "%s\n", _("Nagios-compatible output is now always returned.")); |
222 | break; | 221 | break; |
223 | case 'i': | 222 | case 'i': |
224 | command = 2; | ||
225 | break; | ||
226 | case '1': | 223 | case '1': |
227 | command = 1; | ||
228 | break; | ||
229 | case '0': | 224 | case '0': |
230 | command = 0; | 225 | printf ("%s\n", _("SMART commands are broken and have been disabled (See Notes in --help).")); |
226 | return STATE_CRITICAL; | ||
231 | break; | 227 | break; |
232 | case 'n': | 228 | case 'n': |
233 | fprintf (stderr, "%s\n", _("DEPRECATION WARNING: the -n switch (Nagios-compatible output) is now the")); | 229 | fprintf (stderr, "%s\n", _("DEPRECATION WARNING: the -n switch (Nagios-compatible output) is now the")); |
@@ -268,23 +264,11 @@ main (int argc, char *argv[]) | |||
268 | return STATE_CRITICAL; | 264 | return STATE_CRITICAL; |
269 | } | 265 | } |
270 | 266 | ||
271 | switch (command) { | 267 | smart_read_values (fd, &values); |
272 | case 0: | 268 | smart_read_thresholds (fd, &thresholds); |
273 | retval = smart_cmd_simple (fd, SMART_CMD_AUTO_OFFLINE, 0, TRUE); | 269 | retval = nagios (&values, &thresholds); |
274 | break; | 270 | if (verbose) print_values (&values, &thresholds); |
275 | case 1: | 271 | |
276 | retval = smart_cmd_simple (fd, SMART_CMD_AUTO_OFFLINE, 0xF8, TRUE); | ||
277 | break; | ||
278 | case 2: | ||
279 | retval = smart_cmd_simple (fd, SMART_CMD_IMMEDIATE_OFFLINE, 0, TRUE); | ||
280 | break; | ||
281 | default: | ||
282 | smart_read_values (fd, &values); | ||
283 | smart_read_thresholds (fd, &thresholds); | ||
284 | retval = nagios (&values, &thresholds); | ||
285 | if (verbose) print_values (&values, &thresholds); | ||
286 | break; | ||
287 | } | ||
288 | close (fd); | 272 | close (fd); |
289 | return retval; | 273 | return retval; |
290 | } | 274 | } |
@@ -614,16 +598,18 @@ print_help (void) | |||
614 | printf (" %s\n", "-d, --device=DEVICE"); | 598 | printf (" %s\n", "-d, --device=DEVICE"); |
615 | printf (" %s\n", _("Select device DEVICE")); | 599 | printf (" %s\n", _("Select device DEVICE")); |
616 | printf (" %s\n", _("Note: if the device is selected with this option, _no_ other options are accepted")); | 600 | printf (" %s\n", _("Note: if the device is selected with this option, _no_ other options are accepted")); |
617 | printf (" %s\n", "-i, --immediate"); | 601 | |
618 | printf (" %s\n", _("Perform immediately offline tests")); | 602 | printf (UT_VERBOSE); |
619 | printf (" %s\n", "-q, --quiet-check"); | 603 | |
620 | printf (" %s\n", _("Returns the number of failed tests")); | 604 | printf ("\n"); |
621 | printf (" %s\n", "-1, --auto-on"); | 605 | printf ("%s\n", _("Notes:")); |
622 | printf (" %s\n", _("Turn on automatic offline tests")); | 606 | printf (" %s\n", _("The SMART command modes (-i/--immediate, -0/--auto-off and -1/--auto-on) were")); |
623 | printf (" %s\n", "-0, --auto-off"); | 607 | printf (" %s\n", _("broken in an underhand manner and have been disabled. You can use smartctl")); |
624 | printf (" %s\n", _("Turn off automatic offline tests")); | 608 | printf (" %s\n", _("instead:")); |
625 | 609 | printf (" %s\n", _("-0/--auto-off: use \"smartctl --offlineauto=off\"")); | |
626 | printf (UT_VERBOSE); | 610 | printf (" %s\n", _("-1/--auto-on: use \"smartctl --offlineauto=on\"")); |
611 | printf (" %s\n", _("-i/--immediate: use \"smartctl --test=offline\"")); | ||
612 | |||
627 | printf (UT_SUPPORT); | 613 | printf (UT_SUPPORT); |
628 | } | 614 | } |
629 | 615 | ||
@@ -643,6 +629,5 @@ void | |||
643 | print_usage (void) | 629 | print_usage (void) |
644 | { | 630 | { |
645 | printf ("%s\n", _("Usage:")); | 631 | printf ("%s\n", _("Usage:")); |
646 | printf ("%s [-d <device>] [-i <immediate>] [-q quiet] [-1 <auto-on>]", progname); | 632 | printf ("%s [-d <device>] [-v]", progname); |
647 | printf (" [-O <auto-off>] [-v]\n"); | ||
648 | } | 633 | } |