#!/usr/bin/bash
#
# $id$
#
# Nagios read data from /tmp/ipmisensor.txt
#
# Description: Check Data from /tmp/ipmisensor.txt
#              The plugin was written and testet on Solaris
#
# Author     : Thomas Ebeling
# Version    : 1.0
# Date       : 2009-08-10
# 
# some changes
# Author     : Joerg Michel
# Version    : 1.0.1
# Date       : 2014-02-28
#
# offsetvalue modifies thresholds now
# Author     : Joerg Michel
# Version    : 1.0.2
# Date       : 2014-04-18
#
# included all current hardware in use by swh and stg
# Author     : Julian Jost
# Version    : 2.0
# Date       : 2018-06-22
#

LANG=C
export LANG

# where we are started
WHERE=`dirname $0`

# setting default exit values
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

FILE=/tmp/ipmisensor.txt
FILEPOWER=/tmp/ipmipower.txt

OS=`uname`
case "${OS}" in
        SunOS)
        OFFSET=/opt/RZnagios/etc/plugin-ipmi-offset.cfg
        ;;
        Linux)
        OFFSET=/etc/nagios/plugin-ipmi-offset.cfg
        ;;
esac


# import exit values from utils.sh if we found one
if   [ -f ${WHERE}/utils.sh ] ; then
    . ${WHERE}/utils.sh
elif [ -f ${WHERE}/../utils.sh ] ; then
    . ${WHERE}/../utils.sh
fi

usage() {
    echo "Usage: $0 -p <parameter> [-w <warning>] [-c <critical>] [-s 1|0]"
    exit $STATE_UNKNOWN
}

help () {
    echo ""
    echo "       Usage: $0 -p <parameter> [-w <warning>] [-c <critical>] | -C <create $OFFSET>"
    echo "       Version ${VERSION}"
    echo "       You can create a ${where}${OFFSET}"
    echo "       with some offset values"
    echo "       some Examples :"
    echo "       #key:value         #  one value per key"
    echo "       Temp 1:-10         #  added offset to both thresholds"
    echo "       Sys Temp:ipmi      #  that uses the warn and crit parameters from ${FILE}"
    echo "       System Temp:ipmi   #  that uses the warn and crit parameters from ${FILE}"
    echo "       T_AMB:+20          #  added offset to both thresholds"
    echo ""
    exit $STATE_UNKNOWN
}

offsetfile() {
    echo '#            with some offset values'                                                                    > $OFFSET
    echo '#            some Examples :'                                                                           >> $OFFSET
    echo '#            #key:value         #  one value per key'                                                   >> $OFFSET
    echo '#            Temp 1:-10         #  added offset to both thresholds'                                     >> $OFFSET
    echo '#            Sys Temp:ipmi      #  that uses the warn and crit parameters from ${FILE}'                 >> $OFFSET
    echo '#            System Temp:ipmi   #  that uses the warn and crit parameters from ${FILE}'                 >> $OFFSET
    echo '#            T_AMB:+20          #  added offset to both thresholds'                                     >> $OFFSET
    echo 'Front Ambient:ipmi'                                                                                     >> $OFFSET

        if [ $? -eq 0 ]
        then
        echo ''; echo "Create $OFFSET was successful." ; echo ''
        cat $OFFSET ; echo ''
        else
        echo ''; echo "Create $OFFSET wasn't successful." ; echo ''
        fi
    echo ''
    exit $STATE_UNKNOWN
}

# make no warning or critical default
warning=""
critical=""

power=0

# command line parsing
while [ "$1" != "" ];
do
        case $1 in
        -w)
	    shift
	    warning=$1
	    ;;
        -c)
	    shift
	    critical=$1
	    ;;
	-p)
	    shift
	    parameter=$1
	    ;;
	-s)
	    shift
	    power=$1
	    ;;
	--help|-h)
	    usage
	    ;;
        -*)
	    usage
	    ;;
        *)
	    usage
	    
        esac
        shift
done

# Nagios Statistics threshold values
NGS_WARNING="$warning"
NGS_CRITICAL="$critical"

if [ -z "${parameter}" ] ; then
    usage
    exit $STATE_UNKNOWN
fi

if [ ! -z "${NGS_WARNING}" -a ! -z "${NGS_CRITICAL}" ] ; then 
	if [ "${NGS_WARNING}" -gt "${NGS_CRITICAL}" ] ; then
    		echo "Warning value must be less than the critical value"
    		exit $STATE_UNKNOWN
	fi
fi

# 
# 

outdated() {
    echo "UNKNOWN - outdated data in $1"
    exit $STATE_UNKNOWN
}
missing() {
    echo "UNKNOWN - missing ${WHERE}/current_time or ipmisensor.txt"
    exit $STATE_UNKNOWN
}

offset () {
# whether exists $OFFSET and read OFFSETVALUE OV
if [ -f ${OFFSET} ] ; then
        CHKOV=$( cat ${OFFSET} | grep -v "#" | grep -i "${OFFVALUE}" | awk -F: '{print $1}' )
        if  [ -n "${CHKOV}" ] ; then
                RESOV=$( grep ^"${CHKOV}" ${OFFSET} | awk -F: '{print $2}' )
                case "${RESOV}" in
                        ipmi)
                        NGS_WARNING=$(  grep "${OFFVALUE}" ${FILE} | awk -F\| '{print $9}' | sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F. '{print $1}' )
                        NGS_CRITICAL=$( grep "${OFFVALUE}" ${FILE} | awk -F\| '{print $10}'| sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F. '{print $1}' )
                        OV=0
                        ;;
                        *)
                        OV=${RESOV}
                        NGS_WARNING=$(( ${NGS_WARNING} + ${RESOV} ))
                        NGS_CRITICAL=$(( ${NGS_CRITICAL} +  ${RESOV} ))


                        esac

                else
                OV=0
                fi
        else
        OV=0
fi
}


OS=`uname`
case "${OS}" in
    Linux|SunOS)
        if [ -f ${FILE} ] ; then
		TCURRENT=$(/usr/bin/date +%s)
		TCURRENT=$((${TCURRENT} - 65))
		TSAMPLE=$(/usr/bin/stat --printf=%Z ${FILE})
		if [ $TCURRENT -lt $TSAMPLE ] ; then
                	USENGS=${FILE} 
	    	else
			outdated ${FILE}
		fi
	else
		missing
        fi

	label="IPMI"
	key="IPMI"
	case "${parameter}" in
	    DL385)
	    	temp_1=`awk -F\| 'BEGIN{a=""} /^Temp 1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	temp_2=`awk -F\| 'BEGIN{a=""} /^Temp 2/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	temp_3=`awk -F\| 'BEGIN{a=""} /^Temp 3/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	temp_4=`awk -F\| 'BEGIN{a=""} /^Temp 4/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	temp_5=`awk -F\| 'BEGIN{a=""} /^Temp 5/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	temp_6=`awk -F\| 'BEGIN{a=""} /^Temp 6/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		other=";temp_2=${temp_2};temp_3=${temp_3};temp_4=${temp_4};temp_5=${temp_5};temp_6=${temp_6}"
		key="temp_1"
		value=${temp_1}
		description="Temp 1: ${value}"
		;;
            DL380G7)
                temp_cpu1=`awk -F\| 'BEGIN{a=""} /^02-CPU 1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_system=`awk -F\| 'BEGIN{a=""} /^10-Chipset/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_max=`awk -F\| 'BEGIN{a=""} /^08-HD Max/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_inlet=`awk -F\| 'BEGIN{a=""} /^01-Inlet Ambient/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_controller=`awk -F\| 'BEGIN{a=""} /^27-HD Controller/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_cpu=${temp_cpu1};temp_hd_max=${temp_hd_max};temp_inlet=${temp_inlet};temp_hd_controller=${temp_hd_controller}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temp: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            DL380G8)
                temp_cpu1=`awk -F\| 'BEGIN{a=""} /^02-CPU 1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_system=`awk -F\| 'BEGIN{a=""} /^13-Chipset/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_max=`awk -F\| 'BEGIN{a=""} /^12-HD Max/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_inlet=`awk -F\| 'BEGIN{a=""} /^01-Inlet Ambient/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_cpu=${temp_cpu1};temp_hd_max=${temp_hd_max};temp_inlet=${temp_inlet}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temp: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            DL380G9)
                temp_cpu1=`awk -F\| 'BEGIN{a=""} /^02-CPU 1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_system=`awk -F\| 'BEGIN{a=""} /^10-Chipset/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_max=`awk -F\| 'BEGIN{a=""} /^08-HD Max/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_inlet=`awk -F\| 'BEGIN{a=""} /^01-Inlet Ambient/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_controller=`awk -F\| 'BEGIN{a=""} /^27-HD Controller/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_cpu=${temp_cpu1};temp_hd_max=${temp_hd_max};temp_inlet=${temp_inlet};temp_hd_controller=${temp_hd_controller}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temp: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            DL380G10)
                temp_cpu1=`awk -F\| 'BEGIN{a=""} /^02-CPU 1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_system=`awk -F\| 'BEGIN{a=""} /^22-Chipset/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_max=`awk -F\| 'BEGIN{a=""} /^12-HD Max/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_inlet=`awk -F\| 'BEGIN{a=""} /^01-Inlet Ambient/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_hd_controller=`awk -F\| 'BEGIN{a=""} /^25-HD Controller/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_cpu=${temp_cpu1};temp_hd_max=${temp_hd_max};temp_inlet=${temp_inlet};temp_hd_controller=${temp_hd_controller}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temp: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            SM2029U)
                cpu1_temp=`awk -F\| 'BEGIN{a=""} /^CPU1 Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                system_temp=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                pch_temp=`awk -F\| 'BEGIN{a=""} /^PCH Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                periph_temp=`awk -F\| 'BEGIN{a=""} /^Peripheral Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                mb_nic_temp=`awk -F\| 'BEGIN{a=""} /^MB_NIC_Temp1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		if [ $power -eq 0 ]; then 
                	other=";temp_cpu1=${cpu1_temp};temp_pch=${pch_temp};temp_periph=${periph_temp};temp_mb_nic=${mb_nic_temp}"
                	key="temp_system"
                	value=${system_temp}
                	description="System Temp: ${value}"
		else
			if [ -f ${FILEPOWER} ] ; then
				power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
			else
				power=0
			fi
			other=";"
			key="power_cur"
			value=${power}
			description="Power Current: ${value}"
		fi
                ;;
	    X4150|X4250)
	    	mb_t_amb0=`awk -F\| 'BEGIN{a=""} /^MB\/T_AMB0/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	mb_t_amb1=`awk -F\| 'BEGIN{a=""} /^MB\/T_AMB1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	mb_t_amb2=`awk -F\| 'BEGIN{a=""} /^MB\/T_AMB2/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	mb_t_amb3=`awk -F\| 'BEGIN{a=""} /^MB\/T_AMB3/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	ps0_t_amb=`awk -F\| 'BEGIN{a=""} /^PS0\/T_AMB/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	ps1_t_amb=`awk -F\| 'BEGIN{a=""} /^PS1\/T_AMB/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	t_amb=`awk -F\| 'BEGIN{a=""} /^T_AMB/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		other=";mb_t_amb0=${mb_t_amb0};mb_t_amb1=${mb_t_amb1};mb_t_amb2=${mb_t_amb2};mb_t_amb3=${mb_t_amb3};ps0_t_amb=${ps0_t_amb};ps1_t_amb=${ps1_t_amb}"
		key="t_amb"
		value=${t_amb}
		description="Gen. ambient sensor: ${value}"
		;;
            X4170M2|X4170M3|X4170M4|X4170M6)
                temp_system=`awk -F\| 'BEGIN{a=""} /^T_AMB/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                	other=";"
                	key="temp_system"
                	value=${temp_system}
                	description="Gen. ambient sensor: ${value}"
                else
			power=`awk -F\| 'BEGIN{a=""} /^\/SYS\/VPS/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
		fi
                ;;
	    X4200|X4200M2)
	    	mb_t_amb=`awk -F\| 'BEGIN{a=""} /^mb\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	fp_t_amb=`awk -F\| 'BEGIN{a=""} /^fp\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	pdb_t_amb=`awk -F\| 'BEGIN{a=""} /^pdb\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	io_t_amb=`awk -F\| 'BEGIN{a=""} /^io\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p0_t_core=`awk -F\| 'BEGIN{a=""} /^p0\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                p1_t_core=`awk -F\| 'BEGIN{a=""} /^p1\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		if [ $power -eq 0 ]; then
			other=";fp_t_amb=${fp_t_amb};pdb_t_amb=${pdb_t_amb};io_t_amb=${io_t_amb};p0_t_core=${p0_t_core};p1_t_core=${p1_t_core}"
			key="mb_t_amb"
			value=${mb_t_amb}
			description="MB ambient: ${value}"
		else
			if [ -f ${FILEPOWER} ] ; then
				power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
			else
				power="U"
			fi
		fi
		;;
	    X4270)
	    	mb_t_amb=`awk -F\| 'BEGIN{a=""} /^\/MB\/T_AMB/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	t_amb=`awk -F\| 'BEGIN{a=""} /^T_AMB/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
			other=";mb_t_amb=${mb_t_amb}"
			key="t_amb"
			value=${t_amb}
			description="Gen. ambient sensor: ${value}"
                else
                	power=`awk -F\| 'BEGIN{a=""} /^\/SYS\/VPS/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
			other=";"
			key="power_cur"
			value=${power}
			description="Power Current: ${value}"
                fi
		;;
	    X4500)
	    	proc_p0_t_core=`awk -F\| 'BEGIN{a=""} /^proc\.p0\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	proc_p1_t_core=`awk -F\| 'BEGIN{a=""} /^proc\.p1\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	dbp_t_amb=`awk -F\| 'BEGIN{a=""} /^dbp.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	io_front_t_amb=`awk -F\| 'BEGIN{a=""} /^io.front.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	io_rear_t_amb=`awk -F\| 'BEGIN{a=""} /^io.rear.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	proc_front_t_amb=`awk -F\| 'BEGIN{a=""} /^proc.front.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	proc_rear_t_amb=`awk -F\| 'BEGIN{a=""} /^proc.rear.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		other=";proc_p0_t_core=${proc_p0_t_core};proc_p1_t_core=${proc_p1_t_core};io_front_t_amb=${io_front_t_amb};io_rear_t_amb=${io_rear_t_amb};proc_front_t_amb=${proc_front_t_amb};proc_rear_t_amb=${proc_rear_t_amb}"
		key="dbp_t_amb"
		value="${dbp_t_amb}"
		description="DBP Amb. Temp: ${value}"
	    	;;
	    X7DB8|X7DBI)
	    	cpu_temp_1=`awk -F\| 'BEGIN{a=""} /^CPU Temp 1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	cpu_temp_2=`awk -F\| 'BEGIN{a=""} /^CPU Temp 2/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	sys_temp=`awk -F\| 'BEGIN{a=""} /^Sys Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		other=";cpu_temp_1=${cpu_temp_1};cpu_temp_2=${cpu_temp_2}"
		key="temp_system"
		value=${sys_temp}
		description="Sys Temp: ${value}"
		;;
            X8SILF)
		OFFVALUE="System Temp" ; offset "$OFFVALUE" ; DESCR='System Temp:'
                temp_system=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		measure=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$3} END{if((a+0)==a) print a; else print "degrees C"; }' ${USENGS}`
                if [ $power -eq 0 ]; then
                        other=";sys_temp=${temp_system}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temperature: ${value}"
			if [ ${OV} -ne 0 ] ; then description="${DESCR} ${value} ${measure} - Threshold-Offset ${OV}" ; else description="${DESCR} ${value} ${measure}" ; fi
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
	    X9SRL|X10SRL)
                temp_cpu=`awk -F\| 'BEGIN{a=""} /^CPU Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_system=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_periph=`awk -F\| 'BEGIN{a=""} /^Peripheral Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_periph=${temp_periph};temp_cpu=${temp_cpu}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temperature: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            X9SCL+|X9SCL)
                temp_system=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_periph=`awk -F\| 'BEGIN{a=""} /^Peripheral Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_periph=${temp_periph}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temperature: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            X9DRi-LN4F|X11DPi-NT)
                temp_system=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_periph=`awk -F\| 'BEGIN{a=""} /^Peripheral Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_cpu=`awk -F\| 'BEGIN{a=""} /^CPU1 Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_periph=${temp_periph};temp_cpu=${temp_cpu}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temperature: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            X10SRL-F)
                temp_system=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_periph=`awk -F\| 'BEGIN{a=""} /^Peripheral Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_cpu=`awk -F\| 'BEGIN{a=""} /^CPU Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_periph=${temp_periph};temp_cpu=${temp_cpu}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temperature: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
            X11SPM-TF)
                temp_system=`awk -F\| 'BEGIN{a=""} /^System Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_periph=`awk -F\| 'BEGIN{a=""} /^Peripheral Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                temp_cpu=`awk -F\| 'BEGIN{a=""} /^CPU Temp/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
                if [ $power -eq 0 ]; then
                        other=";temp_periph=${temp_periph};temp_cpu=${temp_cpu}"
                        key="temp_system"
                        value=${temp_system}
                        description="System Temperature: ${value}"
                else
                        if [ -f ${FILEPOWER} ] ; then
                                power=$(awk -F: 'BEGIN{a=""} /^Instantaneous power reading:/{a=$2} END {print a}' /tmp/ipmipower.txt | awk 'BEGIN{a=""} {a=$1} END{if((a+0)==a) print a; else print "U"; }')
                        else
                                power=0
                        fi
                        other=";"
                        key="power_cur"
                        value=${power}
                        description="Power Current: ${value}"
                fi
                ;;
	    X4600)
	    	mb_t_amb0=`awk -F\| 'BEGIN{a=""} /^mb\.t_amb0/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	mb_t_amb1=`awk -F\| 'BEGIN{a=""} /^mb\.t_amb1/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	mb_t_amb2=`awk -F\| 'BEGIN{a=""} /^mb\.t_amb2/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p0_t_amb=`awk -F\| 'BEGIN{a=""} /^p0\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p1_t_amb=`awk -F\| 'BEGIN{a=""} /^p1\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p2_t_amb=`awk -F\| 'BEGIN{a=""} /^p2\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p3_t_amb=`awk -F\| 'BEGIN{a=""} /^p3\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p4_t_amb=`awk -F\| 'BEGIN{a=""} /^p4\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p5_t_amb=`awk -F\| 'BEGIN{a=""} /^p5\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p6_t_amb=`awk -F\| 'BEGIN{a=""} /^p6\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p7_t_amb=`awk -F\| 'BEGIN{a=""} /^p7\.t_amb/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p0_t_core=`awk -F\| 'BEGIN{a=""} /^p0\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p1_t_core=`awk -F\| 'BEGIN{a=""} /^p1\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p2_t_core=`awk -F\| 'BEGIN{a=""} /^p2\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p3_t_core=`awk -F\| 'BEGIN{a=""} /^p3\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p4_t_core=`awk -F\| 'BEGIN{a=""} /^p4\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p5_t_core=`awk -F\| 'BEGIN{a=""} /^p5\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p6_t_core=`awk -F\| 'BEGIN{a=""} /^p6\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
	    	p7_t_core=`awk -F\| 'BEGIN{a=""} /^p7\.t_core/{a=$2} END{if((a+0)==a) print a; else print "U"; }' ${USENGS} | tr -d ' '`
		other=";mb_t_amb1=${mb_t_amb1};mb_t_amb2=${mb_t_amb2};p0_t_amb=${p0_t_amb};p1_t_amb=${p1_t_amb};p2_t_amb=${p2_t_amb};p3_t_amb=${p3_t_amb};p4_t_amb=${p4_t_amb};p5_t_amb=${p5_t_amb};p6_t_amb=${p6_t_amb};p7_t_amb=${p7_t_amb};p0_t_core=${p0_t_core};p1_t_core=${p1_t_core};p2_t_core=${p2_t_core};p3_t_core=${p3_t_core};p4_t_core=${p4_t_core};p5_t_core=${p5_t_core};p6_t_core=${p6_t_core};p7_t_core=${p7_t_core}"
		key="mb_t_amb0"
		value=${mb_t_amb0}
		description="MB ambient sensor 0: ${value}"
		;;
	    *)
		echo "Parameter ${parameter} not supportet by this check"
		exit $STATE_UNKNOWN
	esac
	;;
    *)
	echo "OS ${OS} not supportet by this check"
	exit $STATE_UNKNOWN
esac


if [ -z "${value}" ]; then
        echo "${label} UNKNOWN - no data found matching ${parameter} in /tmp/nagiostats.txt"
	exit $STATE_UNKNOWN
fi

PERFDATA="${key}=${value};${NGS_WARNING};${NGS_CRITICAL}${other};"
PLUGDATA=${description}
OUTPUT=${value}

if [ ! -z "${NGS_CRITICAL}" ] ; then
	if [ `echo "if( ${OUTPUT} >= ${NGS_CRITICAL} ) {1}" | bc` ] ; then
        	echo "${label} CRITICAL - ${PLUGDATA} | ${PERFDATA}"
        	exit $STATE_CRITICAL
	fi
fi
if [ ! -z "${NGS_WARNING}" ] ; then
	if [ `echo "if( ${OUTPUT} >= ${NGS_WARNING} ) {1}" | bc` ] ; then
        	echo "${label} WARNING - ${PLUGDATA} | ${PERFDATA}"
        	exit $STATE_WARNING
	fi
fi

echo "${label} OK - ${PLUGDATA} | ${PERFDATA}"
exit $STATE_OK
