diff options
Diffstat (limited to 'nagios-check-raid-3ware')
-rwxr-xr-x | nagios-check-raid-3ware | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/nagios-check-raid-3ware b/nagios-check-raid-3ware deleted file mode 100755 index 8d767b8..0000000 --- a/nagios-check-raid-3ware +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/perl -Tw - -# Copyright (C) 2006,2008,2009 Peter Palfrader <peter@palfrader.org> -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -# Need to allow /usr/local/bin/tw_cli info c0 u0 status in sudoers: -# -# nagios ALL=(ALL) NOPASSWD: /usr/local/bin/tw_cli info c0 u0 status -# - -use strict; -use English; -use Getopt::Long; - -$ENV{'PATH'} = '/bin:/sbin:/usr/bin:/usr/sbin'; -delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; - -my $TW_CLI = '/usr/local/bin/tw_cli'; -my $SVN_REVISION_STRING = '$Rev$'; -my ($SVN_REVISION) = ($SVN_REVISION_STRING =~ /([0-9]+)/); - $SVN_REVISION = 'unknown' unless defined $SVN_REVISION; -my $VERSION = '0.0.0.'.$SVN_REVISION; - -# nagios exit codes -my $UNKNOWN = -1; -my $OK = 0; -my $WARNING = 1; -my $CRITICAL = 2; - -my $params = { - 'no-sudo' => 0, - 'controller' => 0, - 'unit' => 0 - }; - -Getopt::Long::config('bundling'); -if (!GetOptions ( - '--help' => \$params->{'help'}, - '--version' => \$params->{'version'}, - '--verbose' => \$params->{'verbose'}, - '--controller=i' => \$params->{'controller'}, - '--unit=i' => \$params->{'unit'}, - '--no-sudo' => \$params->{'no-sudo'}, - )) { - die ("$PROGRAM_NAME: Usage: $PROGRAM_NAME [--help|--version] [--verbose] [--no-sudo] [--controller=<n>] [--unit=<n>]\n"); -}; -if ($params->{'help'}) { - print "$PROGRAM_NAME: Usage: $PROGRAM_NAME [--help|--version] [--verbose] [--no-sudo] [--controller=<n>] [--unit=<n>]\n"; - print "Checks status of 3ware raid arrays.\n"; - exit (0); -}; -if ($params->{'version'}) { - print "nagios-check-raid-3ware $VERSION\n"; - print "nagios check for 3ware raids\n"; - print "Copyright (c) 2006 Peter Palfrader <peter\@palfrader.org>\n"; - exit (0); -}; - -$SIG{'__DIE__'} = sub { - print STDERR @_; - exit $UNKNOWN; -}; - -unless (-e $TW_CLI) { - print "Cannot find '$TW_CLI'.\n"; - exit $UNKNOWN; -}; - -my $sudo = $params->{'no-sudo'} ? '' : 'sudo '; -my $command = "$sudo $TW_CLI info c$params->{'controller'} u$params->{'unit'} status"; -print STDERR "Running $command\n" if $params->{'verbose'}; -open (TW, "$command|") or die ("Cannot run $command: $!\n"); -my @tw=<TW>; -close TW; -if ($CHILD_ERROR) { # program failed - die("$command returned with non-zero exit code: ".($CHILD_ERROR / 256)."\n"); -}; - - -my $exit = $UNKNOWN; -my $msg = ''; -for my $line (@tw) { - chomp $line; - next if $line =~ /^$/; - my ($device, $status) = $line =~ m#^(/c[0-9]+/u[0-9]+) status = ([A-Z]+)$#; - unless (defined($device) && defined($status)) { - print "Cannot parse line '$line'\n"; - exit $UNKNOWN; - }; - if ($status eq 'OK' || - $status eq 'VERIFYING') { - $msg .= ($msg eq '' ? '' : '; '). "$device: $status"; - $exit = $exit > $OK ? $exit : $OK; - } elsif ($status eq 'REBUILDING') { - $msg .= ($msg eq '' ? '' : '; '). "$device: $status"; - $exit = $exit > $WARNING ? $exit : $WARNING; - } elsif ($status eq 'DEGRADED') { - $msg .= ($msg eq '' ? '' : '; '). "$device: $status"; - $exit = $exit > $CRITICAL ? $exit : $CRITICAL; - } elsif ($status eq 'OFFLINE') { - $msg .= ($msg eq '' ? '' : '; '). "$device: $status"; - $exit = $exit > $CRITICAL ? $exit : $CRITICAL; - } else { - $msg .= ($msg eq '' ? '' : '; '). "$device: UNKNOWN STATUS '$status'"; - $exit = $exit > $UNKNOWN ? $exit : $UNKNOWN; - }; -}; - -if ($msg eq '') { - $msg = "No devices found"; - die ("exit is not UNKNOWN but $exit") if ($exit != $UNKNOWN); -} - -print $msg,"\n"; -exit $exit; |