summaryrefslogtreecommitdiffstats
path: root/web/attachments/263186-check_linux_raid.pl.diff
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/263186-check_linux_raid.pl.diff')
-rw-r--r--web/attachments/263186-check_linux_raid.pl.diff77
1 files changed, 77 insertions, 0 deletions
diff --git a/web/attachments/263186-check_linux_raid.pl.diff b/web/attachments/263186-check_linux_raid.pl.diff
new file mode 100644
index 0000000..0e7861c
--- /dev/null
+++ b/web/attachments/263186-check_linux_raid.pl.diff
@@ -0,0 +1,77 @@
1--- contrib/check_linux_raid.pl 2007-08-28 04:19:45.000000000 +0100
2+++ contrib/check_linux_raid.pl.new 2008-01-21 17:28:18.000000000 +0000
3@@ -3,6 +3,7 @@
4 # Copyright (c) 2002 ISOMEDIA, Inc.
5 # originally written by Steve Milton
6 # later updates by sean finney <seanius@seanius.net>
7+# bux fixing & usage message by Alain Williams <addw@phcomp.co.uk>
8 #
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11@@ -26,6 +27,8 @@
12 use lib "/usr/local/nagios/libexec";
13 use utils qw(%ERRORS);
14
15+my ($progname) = $0 =~ m|([^/]+)$|;
16+
17 # die with an error if we're not on Linux
18 if ($^O ne 'linux') {
19 print "This plugin only applicable on Linux.\n";
20@@ -42,9 +45,22 @@
21 return "UNKNOWN";
22 }
23
24+sub usage {
25+ print "Inspect Linux software raid devices and return a status for nagios\n";
26+ print "Usage:\n";
27+ print "$progname [--help | -h] [md-device ...]\n";
28+ print "A md-device might be: md0\n";
29+ print "If md-device is not given, all mds will be inspected\n";
30+ exit 0;
31+}
32+
33 my $nextdev;
34-if(defined $ARGV[0]) { $nextdev = shift; }
35-else { $nextdev = "md[0-9]"; }
36+if(defined $ARGV[0]) {
37+ $nextdev = shift;
38+ usage() if($nextdev eq '--help' or $nextdev eq '-h');
39+} else {
40+ $nextdev = "md[0-9]+"; # All MD devices
41+}
42
43 my $code = "UNKNOWN";
44 my $msg = "";
45@@ -53,6 +69,7 @@
46 my %finish;
47 my %active;
48 my %devices;
49+my $debug;
50
51 while(defined $nextdev){
52 open (MDSTAT, "< /proc/mdstat") or die "Failed to open /proc/mdstat";
53@@ -60,14 +77,22 @@
54 while(<MDSTAT>) {
55 if (defined $device) {
56 if (/(\[[_U]+\])/) {
57+ print "status='$1' device '$device'\n" if($debug);
58 $status{$device} = $1;
59 } elsif (/recovery = (.*?)\s/) {
60 $recovery{$device} = $1;
61 ($finish{$device}) = /finish=(.*?min)/;
62- } elsif (/^\s*$/) {
63+ } elsif (/^\s*$/) { # Start of another device - blank line. NB: may not be present
64+ print "undef '$device' _='$_'\n" if($debug);
65 $device=undef;
66+ } elsif(/^md[0-9]+\s*:/) { # Start of another device - another way
67+ print "undef '$device' _='$_'\n" if($debug);
68+ undef $device;
69 }
70- } elsif (/^($nextdev)\s*:/) {
71+ }
72+
73+ # No current device and this line matches the device pattern ?
74+ if ( ! defined($device) and /^($nextdev)\s*:/) {
75 $device=$1;
76 $devices{$device}=$device;
77 if (/active/) {