#!/bin/bash
set +x

LOG_FILE="/var/log/inspect.log"
G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
# source ${G_INSPECT_MMLPATH}/CheckItems
source /opt/inspect/inspect_map.sh
source ${G_INSPECT_MMLPATH}/CommonFunc.sh
CurInspectNum="159"
CurInspectFun="$( GetInspectType $CurInspectNum )"
RESULTFILE="${G_TMP_INSPECT_PATH}tmpResult${CurInspectFun}"
>${RESULTFILE}
isPass=0

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

# BBU备电风险检查
function CheckBBUBackupPowerRisk()
{
    local ret=0
    local result=""
    local bbu_result=""
    local bmc_result=""

    # 查询BBU SN
    bbu_99015YLU="39 39 30 31 35 59 4c 55"
    bbu_sn=""
    bbu_result=$( ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x55 0x00 0x01 0xD5 0x00 0x20 2>/dev/null )
    ret=$?

    bbu_result=$( echo ${bbu_result} )
    if [[ "${ret}" != "0" ]] || [[ "X${bbu_result}" == "X" ]]; then 
        isPass=0
        echo "BBU sn:--||BMC ver:--">> ${RESULTFILE} 2>&1
        return
    fi
    array=(${bbu_result:9}) # # 前3位为厂商ID
    for hex in ${array[@]}; do
		if [[ "${hex}" = "00" ]]; then
            break
        fi
        hex=$((0x${hex}))
        dec=$( echo "ibase=16;obase=10;${hex}"|bc )
        chr=$( echo ${dec} |awk '{printf("%c",$1)}' )
        bbu_sn="${bbu_sn}${chr}"
    done
    if [[ "${bbu_sn}" =~ "99015YLU" ]]; then
        LOG "bbu_99015YLU succ"
    else 
        isPass=0
        echo "BBU sn:${bbu_sn}||BMC ver:--">> ${RESULTFILE} 2>&1
        return
    fi

    # 查询BMC 3.03.00.69
    bmc_ver=""
    bmc_result=$( ipmitool raw 0x30 0x90 0x08 0x00 0x01 0x00 0xff 2>/dev/null )
    ret=$?
    if [[ "${ret}" != "0" ]] || [[ "X${bmc_result}" == "X" ]]; then 
        isPass=0
        echo "BBU sn:${bbu_sn}||BMC ver:--">> ${RESULTFILE} 2>&1
        return
    fi
    array=(${bmc_result:3}) # 去除第一位数据
    for hex in ${array[@]}; do
        hex=$((0x${hex}))
        dec=$( echo "ibase=16;obase=10;${hex}"|bc )
        chr=$( echo ${dec} |awk '{printf("%c",$1)}' )
        bmc_ver="${bmc_ver}${chr}"
    done
    if [ ${#bmc_ver} -ne 10 ] && [ ${#bmc_ver} -ne 4 ]; then
        isPass=0
        echo "BBU sn:${bbu_sn}||BMC ver:${bmc_ver}">> ${RESULTFILE} 2>&1
        return
    fi
    if [ ${#bmc_ver} -eq 10 ]; then
        if [[ "${bmc_ver}" == "3.03.00.69" ]] || [ "${bmc_ver}" \> "3.03.00.69" ]; then
            isPass=0
            echo "BBU sn:${bbu_sn}||BMC ver:${bmc_ver}">> ${RESULTFILE} 2>&1
            return
        fi
    elif [ ${#bmc_ver} -eq 4 ]; then
        if [[ "${bmc_ver}" == "6.63" ]] || [ "${bmc_ver}" \> "6.63" ]; then
            isPass=0
            echo "BBU sn:${bbu_sn}||BMC ver:${bmc_ver}">> ${RESULTFILE} 2>&1
            return
        fi
    fi
    # 查询上次放电时间
    last_time="20"
    result=$( ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x55 0x00 0x01 0xDC 0x00 0x06 2>/dev/null )
    ret=$?
    if [[ "${ret}" != "0" ]] || [[ "X${result}" == "X" ]]; then 
        isPass=1
        echo "[ERR]BBU sn:${bbu_sn}||BMC ver:${bmc_ver}||last time:--||next time:--">> ${RESULTFILE} 2>&1
        return
    fi
    array=(${result:9}) # 前3位为厂商ID
    for hex in ${array[@]}; do
        hex=$((0x${hex}))
        dec=$( echo "ibase=16;obase=10;${hex}"|bc )
        if [[ ${#dec} -eq 1 ]]; then
            dec="0${dec}"
        fi
        last_time="${last_time}${dec}"
    done
    last_time=$( date -d "${last_time:0:8}" +%s )
    last_time=$( date -d "@${last_time}" +"%F" )
    next_time=$( date -d "${last_time} 90 days" +"%F" )
    isPass=1
    echo "[ERR]BBU sn:${bbu_sn}||BMC ver:${bmc_ver}||last time:${last_time}||next time:${next_time}">> ${RESULTFILE} 2>&1
    return
}

CheckBBUBackupPowerRisk
echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
exit 0