packages: nagios-plugin-check_raid/check_raid - sudo setup for smartctl and...

glen glen at pld-linux.org
Mon Mar 12 21:42:42 CET 2012


Author: glen                         Date: Mon Mar 12 20:42:42 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- sudo setup for smartctl and cciss

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

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.111 packages/nagios-plugin-check_raid/check_raid:1.112
--- packages/nagios-plugin-check_raid/check_raid:1.111	Mon Mar 12 20:56:12 2012
+++ packages/nagios-plugin-check_raid/check_raid	Mon Mar 12 21:42:37 2012
@@ -1060,6 +1060,23 @@
 	return wantarray ? @devs : \@devs;
 }
 
+# build list of cciss disks
+# used by smartctl check
+# just return all disks (0..15) for each cciss dev found
+sub detect_cciss_disks {
+	my @devs;
+
+	return unless $smartctl;
+
+	# build devices list for smartctl
+	foreach my $scsi_dev (@_) {
+		foreach my $disk (0..15) {
+			push(@devs, [ $scsi_dev, '-dcciss,', $disk ]);
+		}
+	}
+	return wantarray ? @devs : \@devs;
+}
+
 # @param devices for cciss_vol_status, i.e /dev/cciss/c*d0 /dev/sg*
 sub check_cciss {
 	my @devs = @_;
@@ -1107,17 +1124,11 @@
 	$message .= '; ' if $message;
 	$message .= "cciss:[".join(', ', @status)."]";
 
-	# if we have smartctl installed, check also individual disk health
-	return unless $smartctl;
-
-	# build devices list for smartctl
-	my @smartctl_devs = ();
-	foreach my $scsi_dev (@devs) {
-		foreach my $disk (0..15) {
-			push(@smartctl_devs, [ $scsi_dev, '-dcciss,', $disk ]);
-		}
+	# check also individual disk health
+	my @cciss_disks = detect_cciss_disks(@devs);
+	if (@cciss_disks) {
+		check_smartctl(@cciss_disks);
 	}
-	check_smartctl(@smartctl_devs)
 }
 
 # check for -H parameter for physical disks
@@ -1449,6 +1460,13 @@
 		if (@cciss_devs) {
 			my $c = join(' ', @cciss_devs);
 			push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $cciss_vol_status $c\n");
+		}
+		my @cciss_disks = detect_cciss_disks(@cciss_devs);
+		foreach my $ref (@cciss_disks) {
+			my ($dev, $diskopt, $disk) = @$ref;
+			# escape comma for sudo
+			$diskopt =~ s/,/\\$&/g;
+			push(@sudo, "#CHECK_RAID ALL=(root) NOPASSWD: $smartctl -H $dev $diskopt$disk\n");
 		}
 	}
 
================================================================

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



More information about the pld-cvs-commit mailing list