aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Oliver Skibbe <oliskibbe@gmail.com> 2016-11-19 16:35:50 +0100
committerGravatar GitHub <noreply@github.com> 2016-11-19 16:35:50 +0100
commit4430b63b0f6e1388a0f931b597fef64817ce0614 (patch)
tree9d85ed84b23c6827b1ac66524724c0fb3645dc71
parent303acfc64f2f656729bde803a410a10a80a76b40 (diff)
parent5663b037170da16802918eb57e73c6fb27a825f3 (diff)
downloadmonitoring-plugins-4430b63b0f6e1388a0f931b597fef64817ce0614.tar.gz
Merge pull request #1436 from riskersen/check_disk_iss1420
check_disk - show all disks if state is ok and option error only is used
-rw-r--r--plugins/check_disk.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index e73a0083..4b5ba5fe 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -165,6 +165,7 @@ main (int argc, char **argv)
int result = STATE_UNKNOWN;
int disk_result = STATE_UNKNOWN;
char *output;
+ char *ko_output;
char *details;
char *perf;
char *preamble;
@@ -184,6 +185,7 @@ main (int argc, char **argv)
preamble = strdup (" - free space:");
output = strdup ("");
+ ko_output = strdup ("");
details = strdup ("");
perf = strdup ("");
stat_buf = malloc(sizeof *stat_buf);
@@ -348,9 +350,6 @@ main (int argc, char **argv)
TRUE, 0,
TRUE, path->dtotal_units));
- if (disk_result==STATE_OK && erronly && !verbose)
- continue;
-
if(disk_result && verbose >= 1) {
xasprintf(&flag_header, " %s [", state_text (disk_result));
} else {
@@ -376,15 +375,27 @@ main (int argc, char **argv)
(unsigned long)w_df, (unsigned long)c_df, w_dfp, c_dfp);
*/
+ /* OS: #1420 save all not ok paths to different output, but only in case of error only option */
+ if (disk_result!=STATE_OK && erronly) {
+ xasprintf (&ko_output, "%s%s %s %.0f %s (%.0f%%",
+ ko_output, flag_header,
+ (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
+ path->dfree_units,
+ units,
+ path->dfree_pct);
+ }
+
}
+ /* OS: #1420 only show offending paths if error only option is set, but show all paths if everything is ok */
+ output = (erronly && result!=STATE_OK) ? ko_output : output;
}
if (verbose >= 2)
xasprintf (&output, "%s%s", output, details);
- printf ("DISK %s%s%s|%s\n", state_text (result), (erronly && result==STATE_OK) ? "" : preamble, output, perf);
+ printf ("DISK %s%s%s|%s\n", state_text (result), preamble, output, perf);
return result;
}