Преглед на файлове

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 години
родител
ревизия
f2e6702362
променени са 1 файла, в които са добавени 13 реда и са изтрити 4 реда
  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%%"),