packages: nagios-plugin-check_raid/check_raid - group smartctl device statuses

glen glen at pld-linux.org
Mon Mar 12 20:56:17 CET 2012


Author: glen                         Date: Mon Mar 12 19:56:17 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- group smartctl device statuses

---- Files affected:
packages/nagios-plugin-check_raid:
   check_raid (1.110 -> 1.111) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.110 packages/nagios-plugin-check_raid/check_raid:1.111
--- packages/nagios-plugin-check_raid/check_raid:1.110	Mon Mar 12 20:48:40 2012
+++ packages/nagios-plugin-check_raid/check_raid	Mon Mar 12 20:56:12 2012
@@ -116,6 +116,28 @@
 	return 1;
 }
 
+# a helper to join similar statuses for items
+# instead of printing
+#  0: OK, 1: OK, 2: OK, 3: NOK, 4: OK
+# it would print
+#  0-2,4: OK, 3: NOK
+# takes as input list:
+#  { status => @items }
+sub join_status {
+	my %status = %{$_[0]};
+
+	my @status;
+	while (my($status, $disks) = each %status) {
+		my @s;
+		foreach my $disk (@$disks) {
+			push(@s, $disk);
+		}
+		push(@status, join(',', @s).': '.$status);
+	}
+
+	return join ' ', @status;
+}
+
 # Solaris, software RAID
 sub check_metastat {
 	my($d,$sd);
@@ -1123,8 +1145,8 @@
 	my @CMD = $smartctl;
 	unshift(@CMD, $sudo) if $> and $sudo;
 
-	# status messages pushed here
-	my @status;
+	# status message for devs, latter just joined for shorter messages
+	my %status;
 
 	foreach my $ref (@devs) {
 		my ($dev, $diskopt, $disk) = @$ref;
@@ -1148,16 +1170,16 @@
 				} elsif ($s !~ '^OK') {
 					$status = $ERRORS{CRITICAL};
 				}
-				push(@status, $dev.'#'.$disk.': '.$s);
+				push(@{$status{$s}}, $dev.'#'.$disk);
 			}
 		}
 		close($fh);
 	}
 
-	return unless @status;
+	return unless %status;
 
 	$message .= '; ' if $message;
-	$message .= "smartctl:[".join(', ', @status)."]";
+	$message .= "smartctl:[".join_status(\%status)."]";
 }
 
 sub check_hpacucli {
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/nagios-plugin-check_raid/check_raid?r1=1.110&r2=1.111&f=u



More information about the pld-cvs-commit mailing list