#!/bin/bash
set +x

#ڵ¶
LOG_FILE="/var/log/inspect.log"


G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
source $G_INSPECT_MMLPATH/CheckItems
TMP_RESULT_FILE="/tmp/tmpfilelocalcardtemp"
CurInspectNum="110"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
>${RESULTFILE}
CHECK_PASSED=0
CHECK_FAILED=1

source "/opt/node_type_recognize.sh"
source "/opt/inspect/inspect_map.sh"

function LOG
{
   time=$(date)
   echo [${time}][$$][$CurInspectFun]$@ >> $LOG_FILE
}

function main()
{
    local isPass=0
    local isCheck=1
    local isRH=0
    local iRet=0
    #״̬
    IsStandardNode
    if [ $? -eq 0 ];then
        echo "TempEAR(degrees):not involve||TempEAR_Alarm(degrees):--||TempIN(degrees):--||TempIN_Alarm(degrees):--||TempOUT(degrees):--||TempOUT_Alarm(degrees):--" >> ${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${CHECK_PASSED}" >>${RESULTFILE} 2>&1
        return 0
    fi

    ipmitool sensor > ${TMP_RESULT_FILE}
    iRet=$?
    if [ 0 -ne $iRet ];then
        echo "[ERR]Error:Failed to execute command(ipmitool sensor). Error(${iRet})." >> ${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${CHECK_FAILED}" >>${RESULTFILE} 2>&1
        return 0
    fi

    devtype=$(cat /opt/huawei/deploy/etc/deploy.ini | grep devicetype |awk -F= '{print $2}')

    LOG "[$LINENO]:devtype:$devtype"

    IsRHNode
    isRH=$?

    if [ 0 -eq ${isRH} ];then
        isCheck=0
        #RH
        TempIN=`cat ${TMP_RESULT_FILE} |grep "^Inlet Temp"|awk '{print $4}'`
        TempIN_Alarm="46" #40(TaiShan 2280 V22288 V5) 36(TaiShan 5280 V25288 V5) 46 (other)
        PRODUCT_NAME=$(dmidecode -t 1 | grep "Product Name:" | awk -F: '{print $2}' | sed 's/^\s*//;s/\s*$//')
        if [ "$PRODUCT_NAME"X = "TaiShan 2280 V2"X -o "$PRODUCT_NAME"X = "2288 V5"X -o "$PRODUCT_NAME"X = "2288H V5"X ] || [ "$PRODUCT_NAME"X = "RS221G1"X -o "$PRODUCT_NAME"X = "2288X V5"X ] || [[ "$PRODUCT_NAME" =~ "NW8220X" ]]; then
            TempIN_Alarm="40" #Taishan 2280 V22288 V52288H V52288X V5 
        elif [ "$PRODUCT_NAME"X = "TaiShan 5280 V2"X -o "$PRODUCT_NAME"X = "5288 V5"X -o "$PRODUCT_NAME"X = "5288H V5"X ] || [ "$PRODUCT_NAME"X = "R521G10"X -o "$PRODUCT_NAME"X = "5288X V5"X ]; then
            TempIN_Alarm="36" #Taishan 5280 V2 5288 V55288H V55288X V5
        fi
        TempEAR="--"
        TempEAR_Alarm="--"
        TempOUT="--"
        TempOUT_Alarm="--"
    else
        if [ "${devtype}" -ne 4 ];then
            #豸¶
            TempEAR=`cat ${TMP_RESULT_FILE} |grep TEMP_EAR|awk '{print $3}'`
            #豸¶ֵ
            TempEAR_Alarm=`cat ${TMP_RESULT_FILE} |grep TEMP_EAR|awk '{print $16}'`
        fi
        #¶
        TempIN=`cat ${TMP_RESULT_FILE} |grep TEMP_CARDIN|awk '{print $3}'`
        #ڸ澯ֵ
        TempIN_Alarm=`cat ${TMP_RESULT_FILE} |grep TEMP_CARDIN|awk '{print $20}'`
        #¶
        TempOUT=`cat ${TMP_RESULT_FILE} |grep TEMP_CARDOUT|awk '{print $3}'`
        #ڸ澯ֵ
        TempOUT_Alarm=`cat ${TMP_RESULT_FILE} |grep TEMP_CARDOUT|awk '{print $20}'`
    fi
    if [ "$TempIN" = "na" -o "$TempOUT" = "na" -o "$TempEAR" = "na" ];then
        echo "[ERR]Error:The temperature is Abnormal!" >> ${RESULTFILE} 2>&1
        isPass=1
    fi

    if [ 0 -eq ${isCheck} ];then
        if [ `echo "$TempIN > $TempIN_Alarm" | bc` -eq 1 ];then
            echo "[ERR]Error:The Temperature exceeds the threshold!" >> ${RESULTFILE} 2>&1
            LOG "[$LINENO] The Temperature exceeds the threshold!"
            isPass=1
        fi
        Result="TempEAR(degrees):$TempEAR||TempEAR_Alarm(degrees):$TempEAR_Alarm||TempIN(degrees):$TempIN||TempIN_Alarm(degrees):$TempIN_Alarm||TempOUT(degrees):$TempOUT||TempOUT_Alarm(degrees):$TempOUT_Alarm"
    elif [ "${devtype}" -eq 4 ]; then
            if [ `echo "$TempIN > $TempIN_Alarm" | bc` -eq 1 ] || [ `echo "$TempOUT > $TempOUT_Alarm" | bc` -eq 1 ];then
                echo "[ERR]Error:The Temperature exceeds the threshold!" >> ${RESULTFILE} 2>&1
                LOG "[$LINENO] The Temperature exceeds the threshold!"
                isPass=1
            fi
            Result="TempEAR(degrees):--||TempEAR_Alarm(degrees):--||TempIN(degrees):$TempIN||TempIN_Alarm(degrees):$TempIN_Alarm||TempOUT(degrees):$TempOUT||TempOUT_Alarm(degrees):$TempOUT_Alarm"
    else
        if [ `echo "$TempEAR > $TempEAR_Alarm" | bc` -eq 1 ] || [ `echo "$TempIN > $TempIN_Alarm" | bc` -eq 1 ] || [ `echo "$TempOUT > $TempOUT_Alarm" | bc` -eq 1 ];then
            echo "[ERR]Error:The Temperature exceeds the threshold!" >> ${RESULTFILE} 2>&1
            LOG "[$LINENO] The Temperature exceeds the threshold!"
            isPass=1
        fi
        Result="TempEAR(degrees):$TempEAR||TempEAR_Alarm(degrees):$TempEAR_Alarm||TempIN(degrees):$TempIN||TempIN_Alarm(degrees):$TempIN_Alarm||TempOUT(degrees):$TempOUT||TempOUT_Alarm(degrees):$TempOUT_Alarm"
    fi
    LOG "[$LINENO]:$Result"

    echo "${Result}" >> ${RESULTFILE} 2>&1
    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1

    return 0
}


main

[ -f "${TMP_RESULT_FILE}" ] && rm "${TMP_RESULT_FILE}"
