Browse Source

check_disk: show troubled partition in verbose mode

I'm submitting a small patch to check_disk that will show which partitions are
actually causing the error state. This helps the human operator to quickly
identify the exact issue. I made it so a single -v flag is required so it
doesn't harm legacy code that may be parsing the original style of output.

Thanks to Jason Benguerel.
Jan Wagner 12 năm trước cách đây
mục cha
commit
f2e6702362
1 tập tin đã thay đổi với 13 bổ sung4 xóa
  1. 13 4
      plugins/check_disk.c

+ 13 - 4
plugins/check_disk.c

@@ -172,6 +172,7 @@ main (int argc, char **argv)
   char *details;
   char *perf;
   char *preamble;
+  char *flag_header;
   double inode_space_pct;
   double warning_high_tide;
   double critical_high_tide;
@@ -354,6 +355,12 @@ main (int argc, char **argv)
       if (disk_result==STATE_OK && erronly && !verbose)
         continue;
 
+      if (disk_result && verbose) {
+	      xasprintf(&flag_header, " %s [", state_text (disk_result));
+      }
+      else {
+	      xasprintf(&flag_header, "");
+      }
       xasprintf (&output, "%s %s %.0f %s (%.0f%%",
                 output,
                 (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
@@ -363,18 +370,20 @@ main (int argc, char **argv)
       /* Whether or not to put all disks on new line */
       if (newlines) {
         if (path->dused_inodes_percent < 0) {
-          xasprintf(&output, "%s inode=-);\n", output);
+          xasprintf(&output, "%s inode=-)%s;\n", output, (disk_result ? "]" : ""));
         } else {
-          xasprintf(&output, "%s inode=%.0f%%);\n", output, path->dfree_inodes_percent );
+          xasprintf(&output, "%s inode=%.0f%%)%s;\n", output, path->dfree_inodes_percent, ((disk_result && verbose) ? "]" : ""));
         }
       } else {
         if (path->dused_inodes_percent < 0) {
-          xasprintf(&output, "%s inode=-);", output);
+          xasprintf(&output, "%s inode=-)%s;", output, (disk_result ? "]" : ""));
         } else {
-          xasprintf(&output, "%s inode=%.0f%%);", output, path->dfree_inodes_percent );
+          xasprintf(&output, "%s inode=%.0f%%)%s;", output, path->dfree_inodes_percent, ((disk_result && verbose) ? "]" : ""));
         }
       }
 
+      free(flag_header);
+
       /* TODO: Need to do a similar debug line
       xasprintf (&details, _("%s\n\
 %.0f of %.0f %s (%.0f%% inode=%.0f%%) free on %s (type %s mounted on %s) warn:%lu crit:%lu warn%%:%.0f%% crit%%:%.0f%%"),