#! /bin/sh ###################################################################### # Name: check_hparray # By: Copyright (C) 2007 Magnus Glantz # Credits to: andreiw # Modified by: palli@ok.is 2010-02-21 ###################################################################### # Licence: GPL 2.0 ###################################################################### # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ###################################################################### # Description: # # A Nagios plugin that checks HP Proliant hardware raid via the HPACUCLI tool. # # HPACUCLI needs administrator rights. # add this line to /etc/sudoers # # nagios ALL=NOPASSWD: /usr/sbin/hpacucli ###################################################################### PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PROGNAME=`basename $0` PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` REVISION=`echo '$Revision: 1.0 $' | sed -e 's/[^0-9.]//g'` HPACUCLI=/usr/sbin/hpacucli STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 STATE_DEPENDENT=4 TEMPFILE=`mktemp` alias print_revision=echo print_usage() { echo "" echo "Usage: $PROGNAME -s " echo "Usage: $PROGNAME --all" echo "Usage: $PROGNAME [-h | --help]" echo "Usage: $PROGNAME [-V | --version]" echo "" echo " NOTE:" echo "" echo " HPACUCLI needs administrator rights." echo " add this line to /etc/sudoers" echo " nagios ALL=NOPASSWD: /usr/sbin/hpacucli" echo "" } print_help() { print_revision $PROGNAME $REVISION echo "" print_usage echo "" echo "This plugin checks hardware status for HP Proliant servers using HPACUCLI utility." echo "" exit 0 } if [ $# -lt 1 ]; then print_usage exit $STATE_UNKNOWN fi check_raid() { raid_ok=`cat $TEMPFILE |grep -i ok|wc -l` raid_warning=`cat $TEMPFILE|grep -i -E 'rebuild|predictive' |wc -l` raid_critical_1=`cat $TEMPFILE|grep -i 'failed|recovery' | wc -l` err_check=`expr $raid_ok + $raid_warning + $raid_critical_1 ` if [ $err_check -eq "0" ]; then checkm=`cat $TEMPFILE|sed -e '/^$/ d'` echo "$PROGNAME Error. $checkm" exit 2 fi if [ $raid_ok -ge "1" ]; then exit_status=$STATE_OK fi if [ $raid_warning -ge "1" ]; then exit_status=$STATE_WARNING fi if [ $raid_critical_1 -ge "1" ]; then exit_status=$STATE_CRITICAL fi if [ $exit_status -eq "0" ]; then echo "RAID OK - ($raid_ok disks ok)" elif [ $exit_status -eq "1" ]; then echo "RAID WARNING - ($raid_ok OK; $raid_warning warnings)" elif [ $exit_status -eq "2" ]; then echo "RAID CRITICAL - ($raid_ok OK; $raid_warning warnings; $raid_critical_1 crit)" fi cat $TEMPFILE rm -f "$TEMPFILE" exit $exit_status } case "$1" in --help) print_help exit 0 ;; -h) print_help exit 0 ;; --version) print_revision $PROGNAME $REVISION exit 0 ;; -V) print_revision $PROGNAME $REVISION exit 0 ;; --all) controllers=`sudo -u root hpacucli controller all show | sed 's/.*Slot \([0-9]*\).*/\1/'` for i in $controllers ; do sudo -u root $HPACUCLI controller slot=$i pd all show status;done > $TEMPFILE check_raid ;; -s) sudo -u root $HPACUCLI controller slot=$2 pd all show status > $TEMPFILE check_raid ;; *) print_usage ;; esac