#!/bin/sh
set +x

filename="checkAvailabilityOfFwUpg"

LOG_FILE="/var/log/inspect.log"
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CommonFunc.sh
source $G_MML_FILE_PATH/CheckItems
source /opt/node_type_recognize.sh
G_REMOTE_TMP_FILE="${G_TMP_INSPECT_PATH}tmpfile"
CurInspectNum="250"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="${G_TMP_INSPECT_PATH}tmpResult${CurInspectFun}"
>${RESULTFILE}
iRet=0
ipmiToolResultIp=`ipmitool raw 0x0c 0x02 0x01 0xcc 0x00 0x00`
ipmiToolResultGateWay=`ipmitool raw 0x0c 0x02 0x01 0xce 0x00 0x00`
ipmiToolResultPrefix=`ipmitool raw 0x0c 0x02 0x01 0xcd 0x00 0x00`

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

function get_ipmi_ipv6_address()
{
    input=$1
    output=""
    count=`echo $input | grep "Unable to" | wc -l`
    if [ "${count}" != "0" ];then
        output="$2:null"
    else
        input=($input)
        lenth=${#input[*]}
        nubc=0
        while [[ $lenth -gt 4 ]]
        do
            ((lenth--))
            if [ $nubc -eq 1 ];then
                if [[ $lenth -eq 4 ]];then
                    output=$output${input[$lenth]}
                else
                    output=$output${input[$lenth]}":"
                    nubc=0
                fi
            else
                output=$output${input[$lenth]}
                ((nubc++))
            fi
        done
        output="$2:`python /opt/huawei/snas/script/inspect_mml/ipv6Compress.py "${output}"`"
    fi
    echo $output
}

ipmitool lan print | grep -e 'Subnet Mask' -e 'Default Gateway IP' -e 'IP Address' | grep -v 'Source' > ${RESULTFILE} 2>&1
if [ "0" != "$?" ];then
    sleep 5
    ipmitool lan print > ${RESULTFILE} 2>&1
    iRet=$?
    LOG "[$LINENO]try lan again iRet=$iRet"
fi

get_ipmi_ipv6_address "$ipmiToolResultIp" >> ${RESULTFILE} 2>&1 "ipmi_ipv6_address"
if [ "0" != "$?" ];then
    sleep 5
    get_ipmi_ipv6_address "$ipmiToolResultIp" >> ${RESULTFILE} 2>&1 "ipmi_ipv6_address"
    iRet=$?
    LOG "[$LINENO]try get_ipmi_ipv6_address iRet=$iRet"
fi

get_ipmi_ipv6_address "$ipmiToolResultGateWay" >> ${RESULTFILE} 2>&1 "ipmi_ipv6_gateway"
if [ "0" != "$?" ];then
    sleep 5
    get_ipmi_ipv6_address "$ipmiToolResultGateWay" >> ${RESULTFILE} 2>&1 "ipmi_ipv6_gateway"
    iRet=$?
    LOG "[$LINENO]try get_ipmi_ipv6_gateway iRet=$iRet"
fi

get_ipmi_ipv6_address "$ipmiToolResultPrefix" >> ${RESULTFILE} 2>&1 "ipmi_ipv6_prefix"
if [ "0" != "$?" ];then
    sleep 5
    get_ipmi_ipv6_address "$ipmiToolResultPrefix" >> ${RESULTFILE} 2>&1 "ipmi_ipv6_prefix"
    iRet=$?
    LOG "[$LINENO]try get_ipmi_ipv6_prefix iRet=$iRet"
fi

# 获取硬件版本 -- 开始
if $(IsTSNode); then
    echo 'TaiShan Node' >> ${RESULTFILE} 2>&1
else
    if $(IsRHV3Node); then
        echo 'V3 Node' >> ${RESULTFILE} 2>&1
    elif $(IsRHV5Node); then
        echo 'V5 Node' >> ${RESULTFILE} 2>&1
    else
        echo "Unrecognized Node: $PRODUCT_NAME" >> ${RESULTFILE} 2>&1
    fi
fi
# 获取硬件版本 -- 结束

# 获取 BMC 版本 -- 开始
CMD_GET_BMC_VER="/usr/bin/ipmitool raw 0x30 0x90 0x08 0x00 0x01 0x00 0x0e"
raw_version=$($CMD_GET_BMC_VER)
raw_version_test=$( echo ${raw_version} | grep -Ev ^[0-9,a-f,' ']+$ )
if [ -z "${raw_version}" ] || [ ! -z "${raw_version_test}" ] ; then
    version_bmc="NULL"
else
    version_bmc=$(echo "$raw_version" | cut -d ' ' -f 3- | tr ' ' '\n' | xargs -I{} echo -ne "\\x{}")
fi
echo "BMC Version: ${version_bmc}" >> ${RESULTFILE} 2>&1
# 获取 BMC 版本 -- 结束

if $(isMaster); then
    echo 'MasterNode' >> ${RESULTFILE} 2>&1
fi

LOG "iRet:$iRet"
