#!/bin/sh

# Some defaults
hostaddress=evahost
username=eva
password=eva1234

BODYFILE=/tmp/check_eva.body
LASTCHECK=`ls -la /etc/sssu.out | awk ' { print $6,$7,$8 }'`
COMMANDFILE="/etc/nagios/check_eva.sssu"
VERSION=1.0

OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3





print_help() {
      echo "check_eva version $VERSION"
      echo "This plugin checks status of HP EVA Array via sssu command"
      echo ""
      echo "Usage: $0 [OPTIONS]"
      echo "Options:"
      echo  "[-H <host>]"
      echo  "[--username <user>]"
      echo  "[--password <password]"
      echo  "[--test]"
      echo   "[--help]"
      echo ""
}



# Parse arguments
while [ $# -gt 0 ]
do
  case $1
  in
    -H)
      hostaddress=$2
      shift 2
    ;;

    --username)
      username=$2
      shift 2
    ;;

    --password)
      password=$2
      shift 2
    ;;

    -P)
      password=$2
      shift 2
    ;;

    -U)
      username=$2
      shift 2
    ;;




    --test)
      testmode=$1
      shift 1
    ;;
    --help)
      print_help ;
      exit $OK
    ;;

    *)
      print_help ;
      exit $UNKNOWN
    ;;
  esac
done
  





# Compatibility with old style use case of this file
if [ $# -eq 0 ]; then
  
  if [ ! -f $COMMANDFILE ]; then
    echo "Error, could not find commandfile $COMMANDFILE"
    exit 3
  fi
  
  /usr/local/sbin/sssu "file $COMMANDFILE" |grep -v PASSWORD  > /etc/sssu.out

fi









# Only run actual SSSU command if this is not a test run
#if [ -z $testmode ]; then
#  /usr/local/sbin/sssu "file $COMMANDFILE" |grep -v PASSWORD  > /etc/sssu.out
#fi



# Run the actual sssu command
CMD1="set option on_error=continue"
CMD2="select manager $hostaddress USERNAME=$username PASSWORD=$password"
CMD3="ls system full"

if [ "$DEBUG" == "1" ]; then
  echo "Debug: $CMD2"
fi

/usr/local/sbin/sssu "$CMD1" "$CMD2" "$CMD3" | grep -v PASSWORD > /etc/sssu.out


PROBLEM=`grep -w operationalstate /etc/sssu.out |grep -v good |wc -l`
ERRORCHECK1=`grep -i error /etc/sssu.out| grep -v on_error | wc -l`
ERRORCHECK2=`grep -w operationalstate /etc/sssu.out | wc -l`


SUMMARY=`awk ' $1 == "objectname"  { STORAGE=$3 } \
$1 == "operationalstate"  { STATE=$3 } \
$1 == "managementhostname" { print STORAGE "=" STATE ";" } ' /etc/sssu.out | tr '\n' ' '`


PERFDATA=`awk ' $1 == "objectname"  { STORAGE=$3 } \
$1 == "totalstoragespace" { totalstoragespace=STORAGE "_" $1 "=" $3 } \
$1 == "usedstoragespace" { usedstoragespace=STORAGE "_" $1 "=" $3 } \
$1 == "availablestoragespace" { availablestoragespace=STORAGE "_" $1 "=" $3 } \
$1 == "managementhostname" { print totalstoragespace, usedstoragespace, availablestoragespace } ' /etc/sssu.out | tr '\n' ' '`



#totalstoragespace=`grep totalstoragespace /etc/sssu.out | awk '{ print $3 }' | tr '\n' ' ' `
#usedstoragespace=`grep usedstoragespace /etc/sssu.out | awk '{ print $3 }' | tr '\n' ' '`
#availablestoragespace=`grep availablestoragespace /etc/sssu.out | awk '{ print $3 }' | tr '\n' ' '`

#PERFDATA="totalstoragespace=$totalstoragespace usedstoragespace=$usedstoragespace availablestoragespace=$availablestoragespace"

if  [ "$PROBLEM" -gt 0 ]; then
        echo "Warning - HP EVA Requires attention. $SUMMARY | $PERFDATA"
        echo "EVA state last checked at $LASTCHECK"
        grep -E 'operationalstate|operationalstatedetail|objectname|licensestate|systemtype|storagespace' /etc/sssu.out
        exit 1
fi



if [ "$ERRORCHECK1" -gt 0 ]; then
        echo "Unknown - failed to run sssu command"
        cat /etc/sssu.out
        exit 3
fi

if [ "$ERRORCHECK2" -lt 1 ]; then
        echo "Unknown - Could not retrieve information via sssu"
        cat /etc/sssu.out
        exit 3
fi




echo "OK - HP EVA reports: $SUMMARY | $PERFDATA"
echo "EVA state last checked at $LASTCHECK"
grep -E 'operationalstate|operationalstatedetail|objectname|licensestate|systemtype|storagespace' /etc/sssu.out

