#!/bin/bash
set +x

#检查集群节点个数
G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
source ${G_INSPECT_MMLPATH}/CheckItems
CurInspectNum="351"
CurInspectFun="$( GetInspectType $CurInspectNum )"
RESULTFILE="${G_TMP_INSPECT_PATH}tmpResult${CurInspectFun}"
>${RESULTFILE}

source /opt/node_type_recognize.sh
ofedConfigPath="/opt/driver/ib-driver"
LOG_FILE="/var/log/inspect.log"
RepeatTimes=(1 2 3)

EXPANDERTOOL228812="/opt/hardware_firmware/rh/ses/RH228812HDD/expanderTool"
EXPANDERTOOL228825="/opt/hardware_firmware/rh/ses/RH228825HDD/expanderTool"
EXPANDERTOOL528836="/opt/huawei/snas/bin/g3Xflash"
SANS_FILE="/opt/huawei/snas/etc/snas.ini"
#获取当前节点上各个固件版本的ipmitool命令
CMD_GET_BMC_VER="/usr/bin/ipmitool raw 0x30 0x90 0x08 0x00 0x01 0x00 0x0e"
CMD_GET_MAINBOARD_BIOS_VER="/usr/bin/ipmitool raw 0x30 0x90 0x08 0x00 0x06 0x00 0x0e"
CMD_GET_MAINBOARD_CPLD_VER="/usr/bin/ipmitool raw 0x30 0x90 0x08 0x00 0x02 0x00 0x0e"

BMC_VER_X86="6.41"
BMC_VER_ARM="6.26"
BIOS_VER_X86="8.20"
BIOS_VER_ARM="1.79"
MBCPLD_VER_X86="3.06"
MBCPLD_VER_ARM="6.00"
OK=1
NO=0


CheckVersion=$(grep "^ProductVersion" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
Product_Version=$( grep -w "ExternalVersion" /opt/huawei/deploy/package/version |awk -F"=" '{print $2}' )
source /opt/node_type_recognize.sh

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

#RH结果是从第二个字段开始取
function RHhex2ascii()
{
    local idx=0
    local INPUT=$1
    local OUTPUT=""
    for i in $INPUT ; do
        idx=$((idx+1))
        if [ $idx -gt 1 ];then
            OUTPUT=$OUTPUT`echo -e "\\x$i"`
        fi
    done
    echo "$OUTPUT"
}

# bmc版本格式都是V1.40或者1.2.56.2或者00.3.43之类的，前面带V的是NVdimm的版本
function curVer_ge_desVer() 
{
    curbmcVer="${1}"
    expbmcVer="${2}"

    curbmcVer=$( echo "$curbmcVer" | sed "s/V//g" | sed "s/\.//g" | grep -o [0-9]* )
    expbmcVer=$( echo "$expbmcVer" | sed "s/V//g" | sed "s/\.//g" | grep -o [0-9]* )

    if [ X"${curbmcVer}" == X"" -o  X"${expbmcVer}" == X"" ]; then
        echo "0"
        return
    fi

    if [ ${curbmcVer} -ge ${expbmcVer} ]; then
        echo "1"
        return
    fi

    echo "0"
    return
}

#需Web界面升级的固件
function getBMC()
{
    local Des_V3_BMC_Version=$(grep "^Des_V3_BMC_Version" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_V5_BMC_Version=$(grep "^Des_V5_BMC_Version" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_TS_BMC_Version=$(grep "^Des_TS_BMC_Version" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_TS_BMC_Version_1711=$(grep "^Des_TS_BMC_1711_Version" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local boardVer=$(ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x65 0x00 0x00 | awk '{print $4}')
    local version_bmc=""
    local isPass="${1}"
    #获取BMC固件版本
    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=$( RHhex2ascii "$raw_version" )
    fi

    IsRHV3Node
    isRetRH3=$?
    IsRHV5Node
    isRetRH5=$?
    IsTSNode
    isRetTS=$?
    if [ "$isRetRH3" == "0" ]; then
        curVerGeDesVer=$( curVer_ge_desVer "${version_bmc}" "${Des_V3_BMC_Version}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:BMC version ${version_bmc} is lower than the standard version ${Des_V3_BMC_Version}" >>${RESULTFILE} 2>&1
        fi
    elif [ "$isRetRH5" == "0" ]; then
        if [ ${IsNoNeedCheck} -eq 0 ];then
            curVerGeDesVer=$( curVer_ge_desVer "${version_bmc}" "${BMC_VER_X86}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BMC version ${version_bmc} is lower than the recommended version ${BMC_VER_X86},IsNoNeedCheck(${IsNoNeedCheck})" >>${RESULTFILE} 2>&1
            fi
        else
            curVerGeDesVer=$( curVer_ge_desVer "${version_bmc}" "${Des_V5_BMC_Version}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BMC version ${version_bmc} is lower than the standard version ${Des_V5_BMC_Version}" >>${RESULTFILE} 2>&1
            fi
        fi

    elif [ "$isRetTS" == "0" ]; then
        if [ "X${boardVer}" != "X20" ]; then
            if [ ${IsNoNeedCheck} -eq 0 ]; then
                curVerGeDesVer=$( curVer_ge_desVer "${version_bmc}" "${BMC_VER_ARM}")
                if [ ${curVerGeDesVer} -eq 0 ]; then
                    isPass=$(check_pass ${isPass} 4)
                    echo "[ERR]INFO:BMC version ${version_bmc} is lower than the recommended version ${BMC_VER_ARM},IsNoNeedCheck(${IsNoNeedCheck})" >>${RESULTFILE} 2>&1
                fi
            else
                curVerGeDesVer=$( curVer_ge_desVer "${version_bmc}" "${Des_TS_BMC_Version}")
                if [ ${curVerGeDesVer} -eq 0 ]; then
                    isPass=$(check_pass ${isPass} 4)
                    echo "[ERR]INFO:BMC version ${version_bmc} is lower than the standard version ${Des_TS_BMC_Version}" >>${RESULTFILE} 2>&1
                fi
            fi

        else
            curVerGeDesVer=$( curVer_ge_desVer "${version_bmc}" "${Des_TS_BMC_Version_1711}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BMC version ${version_bmc} is lower than the standard version ${Des_TS_BMC_Version_1711}" >>${RESULTFILE} 2>&1
            fi
        fi
    fi

    echo "BMC_Version:${version_bmc}"
    return ${isPass}
}

function getBIOS()
{
    local Des_V3_2288_BIOS_Ver=$(grep "^Des_V3_2288_BIOS_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_V3_5288_BIOS_Ver=$(grep "^Des_V3_5288_BIOS_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_V5_BIOS_Ver=$(grep "^Des_V5_BIOS_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_TS_BIOS_Ver=$(grep "^Des_TS_BIOS_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local version_bios=""
    local isPass="${1}"

    #获取BIOS固件版本
    raw_version=$($CMD_GET_MAINBOARD_BIOS_VER)
    raw_version_test=$( echo ${raw_version} |grep -Ev ^[0-9,a-f,' ']+$ )
    if [ -z "${raw_version}" ] || [ ! -z "${raw_version_test}" ] ; then
        version_bios="NULL"
    else
        version_bios=$( RHhex2ascii "${raw_version}" )
        version_bios=$( echo ${version_bios} | awk -F ")" '{print $2}' )
    fi

    IsRHV3Node
    isRetRH3=$?
    IsRHV5Node
    isRetRH5=$?
    IsTSNode
    isRetTS=$?
    if [ "$isRetRH3" == "0" ]; then
        IsRH2288Node
        if [ "$?" == "0" ]; then
            curVerGeDesVer=$( curVer_ge_desVer "${version_bios}" "${Des_V3_2288_BIOS_Ver}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BIOS version ${version_bios} is lower than the standard version ${Des_V3_2288_BIOS_Ver}" >>${RESULTFILE} 2>&1
            fi
        else
            curVerGeDesVer=$( curVer_ge_desVer "${version_bios}" "${Des_V3_5288_BIOS_Ver}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BIOS version ${version_bios} is lower than the standard version ${Des_V3_5288_BIOS_Ver}" >>${RESULTFILE} 2>&1
            fi
        fi
    elif [ "$isRetRH5" == "0" ]; then
        if [ ${IsNoNeedCheck} -eq 0 ]; then
            curVerGeDesVer=$( curVer_ge_desVer "${version_bios}" "${BIOS_VER_X86}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BIOS version ${version_bios} is lower than the recommended version ${BIOS_VER_X86},IsNoNeedCheck(${IsNoNeedCheck})." >>${RESULTFILE} 2>&1
            fi
        else
            curVerGeDesVer=$( curVer_ge_desVer "${version_bios}" "${Des_V5_BIOS_Ver}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BIOS version ${version_bios} is lower than the recommended version ${Des_V5_BIOS_Ver}" >>${RESULTFILE} 2>&1
            fi
        fi
    elif [ "$isRetTS" == "0" ]; then
        if  [ ${IsNoNeedCheck} -eq 0 ]; then
            curVerGeDesVer=$( curVer_ge_desVer "${version_bios}" "${BIOS_VER_ARM}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BIOS version ${version_bios} is lower than the recommended version ${BIOS_VER_ARM},IsNoNeedCheck(${IsNoNeedCheck})." >>${RESULTFILE} 2>&1
            fi
        else
            curVerGeDesVer=$( curVer_ge_desVer "${version_bios}" "${Des_TS_BIOS_Ver}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:BIOS version ${version_bios} is lower than the standard version ${Des_TS_BIOS_Ver}" >>${RESULTFILE} 2>&1
            fi
        fi
    fi

    echo "BIOS_Version:${version_bios}"
    return ${isPass}
}

#1.12   3.11        1.15    3.15
function getCPLD4RH()
{
    local Des_2288V3_MBCPLD_Ver=$(grep "^Des_2288V3_MBCPLD_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_5288V3_MBCPLD_Ver=$(grep "^Des_5288V3_MBCPLD_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_2288V5_MBCPLD_Ver=$(grep "^Des_2288V5_MBCPLD_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_5288V5_MBCPLD_Ver=$(grep "^Des_5288V5_MBCPLD_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local CPLD_Version=""
    local isPass="${1}"

    #获取主板CPLD固件版本
    raw_version=$($CMD_GET_MAINBOARD_CPLD_VER)
    raw_version_test=$( echo ${raw_version} | grep -Ev ^[0-9,a-f,' ']+$ )
    if [ -z "${raw_version}" ] || [ ! -z "${raw_version_test}" ] ; then
        version_mb_cpld="NULL"
    else
        version_mb_cpld=$( RHhex2ascii "${raw_version}" )
        version_mb_cpld=$( echo ${version_mb_cpld} | awk -F ")" '{print $2}')
    fi

    IsRH2288Node
    if [ "$?" == "0" ]; then
        # 背板CPLD不再获取版本，因为采购渠道不统一，可以外购
        IsRHV3Node
        if [ "$?" = "0" ]; then
            curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${Des_2288V3_MBCPLD_Ver}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the standard version ${Des_2288V3_MBCPLD_Ver}" >>${RESULTFILE} 2>&1
            fi
        else
            if [ ${IsNoNeedCheck} -eq 0 ]; then
                curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${MBCPLD_VER_X86}")
                if [ ${curVerGeDesVer} -eq 0 ]; then
                    isPass=$(check_pass ${isPass} 4)
                    echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the recommended version ${MBCPLD_VER_X86}" >>${RESULTFILE} 2>&1
                fi
            else
                curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${Des_2288V5_MBCPLD_Ver}")
                if [ ${curVerGeDesVer} -eq 0 ]; then
                    isPass=$(check_pass ${isPass} 4)
                    echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the standard version ${Des_2288V5_MBCPLD_Ver}" >>${RESULTFILE} 2>&1
                fi
            fi
        fi
        CPLD_Version="CPLD_Version:MB_CPLD=${version_mb_cpld}"
        echo "CPLD_Version:${CPLD_Version}"
    else
        IsRHV3Node
        if [ "$?" = "0" ]; then
            curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${Des_5288V3_MBCPLD_Ver}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the standard version ${Des_5288V3_MBCPLD_Ver}" >>${RESULTFILE} 2>&1
            fi
        else
            if [ ${IsNoNeedCheck} -eq 0 ]; then
                curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${MBCPLD_VER_X86}")
                if [ ${curVerGeDesVer} -eq 0 ]; then
                    isPass=$(check_pass ${isPass} 4)
                    echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the recommended version ${MBCPLD_VER_X86}" >>${RESULTFILE} 2>&1
                fi
            else
                curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${Des_5288V5_MBCPLD_Ver}")
                if [ ${curVerGeDesVer} -eq 0 ]; then
                    isPass=$(check_pass ${isPass} 4)
                    echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the standard version ${Des_5288V5_MBCPLD_Ver}" >>${RESULTFILE} 2>&1
                fi
            fi
        fi

        CPLD_Version="CPLD_Version:MB_CPLD=${version_mb_cpld}"
        echo "CPLD_Version:${CPLD_Version}"
    fi
    return ${isPass}
}

function getCPLD4TS()
{
    local Des_2280TS_MBCPLD_Ver=$(grep "^Des_2280TS_MBCPLD_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_5280TS_MBCPLD_Ver=$(grep "^Des_5280TS_MBCPLD_Ver" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local CPLD_Version=""
    local isPass="${1}"

    #获取主板CPLD固件版本  同时去除背板CPLD固件版本的获取
    raw_version=$($CMD_GET_MAINBOARD_CPLD_VER)
    raw_version_test=$( echo ${raw_version} | grep -Ev ^[0-9,a-f,' ']+$ )
    if [ -z "${raw_version}" ] || [ ! -z "${raw_version_test}" ] ; then
        version_mb_cpld="NULL"
    else
        version_mb_cpld=$( RHhex2ascii "${raw_version}" )
        version_mb_cpld=$( echo ${version_mb_cpld} | awk -F ")" '{print $2}')
    fi

    IsTS5280Node
    if [ "$?" == "0" ]; then
        curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${Des_5280TS_MBCPLD_Ver}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the standard version ${Des_5280TS_MBCPLD_Ver}" >>${RESULTFILE} 2>&1
        fi
        CPLD_Version="CPLD_Version:MB_CPLD=${version_mb_cpld}"
        echo "CPLD_Version:${CPLD_Version}"
    else
        curVerGeDesVer=$( curVer_ge_desVer "${version_mb_cpld}" "${Des_2280TS_MBCPLD_Ver}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:MainBoard CPLD version ${version_mb_cpld} is lower than the standard version ${Des_2280TS_MBCPLD_Ver}" >>${RESULTFILE} 2>&1
        fi
        CPLD_Version="CPLD_Version:MB_CPLD=${version_mb_cpld}"
        echo "CPLD_Version:${CPLD_Version}"
    fi

    return ${isPass}
}

#126,129 FirmWare：00.15.01.11 Platform version:00.11
function getSES()
{
    local Des_2288_SesVer=$(grep "^Des_2288_SesVer" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_5288_FirmVer=$(grep "^Des_5288_FirmVer" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_5288_PlatVer=$(grep "^Des_5288_PlatVer" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local command_tool=""
    local isPass="${1}"

    IsRH2288Node
    if [ "$?" == "0" ]; then
        devname=$(lsscsi -g |grep "Expander" |awk '{print $NF}');
        devicetype=$( grep -w "nodeType" ${SANS_FILE} | awk -F"=" '{print $2}' | sed 's/ //g')
        #12:P12E Node, 21:P12X Node, 27:F12B Node, 40:F12B-H Node.  13:P25E Node, 22:P25X Node, 28:F25B Node, 30:S25A Node, 31:S25B Node, 41:S25X Node
        if [[ "12" == "${devicetype}" || "21" == "${devicetype}" || "27" == "${devicetype}" || "40" == "${devicetype}" ]]; then
            command_tool="${EXPANDERTOOL228812}"
        elif [[ "13" == "${devicetype}" || "22" == "${devicetype}" || "28" == "${devicetype}" || "30" == "${devicetype}" || "31" == "${devicetype}" || "41" == "${devicetype}" ]]; then
            command_tool="${EXPANDERTOOL228825}"
        fi
        if [ "X" == "X${command_tool}" ]; then
            echo "SES_Version:NULL"
            isPass=1
            LOG "[${LINENO}] TOOL ${command_tool} is not exist"
            echo "[ERR]INFO:SES tool is not exist,can not get SES version." >>${RESULTFILE} 2>&1
            return ${isPass}
        fi

        sesversion=$( ${command_tool} query ${devname} | grep "Image Version" | awk -F":" '{print $2}'| sed 's/ //g' )
        curVerGeDesVer=$( curVer_ge_desVer "${sesversion}" "${Des_2288_SesVer}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:SES version ${sesversion} is lower than the standard version ${Des_2288_SesVer}" >>${RESULTFILE} 2>&1
            LOG "[${LINENO}] SES version ${sesversion} is lower than the standard version ${Des_2288_SesVer}"
        fi
        echo "SES_Version:${sesversion}"

    else
        command_tool="${EXPANDERTOOL528836}"
        if [ ! -f "${command_tool}" ]; then
            isPass=1
            echo "SES_Version:NULL"
            echo "[ERR]INFO: The tool(/opt/product/snas/bin/g3Xflash) does not exist,can not get SESVersion information." >>${RESULTFILE} 2>&1
            return ${isPass}
        fi
        SES_Firmware=$( ${command_tool} -i 500605b0000273bf get ver | grep "Firmware" | awk -F":" '{print $2}'| sed 's/ //g' )
        curVerGeDesVer=$( curVer_ge_desVer "${SES_Firmware}" "${Des_5288_FirmVer}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:SES Firmware version ${SES_Firmware} is not match the standard version ${Des_5288_FirmVer}" >>${RESULTFILE} 2>&1
        fi

        SES_Platform=$( ${command_tool} -i 500605b0000273bf get ver 3 | grep "Platform Version" |awk -F":" '{print $2}' | sed 's/\t//g' )
        curVerGeDesVer=$( curVer_ge_desVer "${SES_Platform}" "${Des_5288_PlatVer}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:SES Firmware version ${SES_Platform} is not match the standard version ${Des_5288_PlatVer}" >>${RESULTFILE} 2>&1
            LOG "[${LINENO}] SES Firmware version ${SES_Platform} is not match the standard version ${Des_5288_PlatVer}"
        fi
        echo "SES_Version:SES_Firmware=${SES_Firmware},SES_Platform=${SES_Platform}"

    fi
    return ${isPass}
}

function getNVDIMM()
{
    local Des_8G_NVDIMM_Version=$(grep "^Des_8G_NVDIMM_Version" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_16G_NVDIMM_Version=$(grep "^Des_16G_NVDIMM_Version" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local command_tool="/usr/local/nvdimm/nvdimm"
    local isPass="${1}"
    NVDIMM_Version=$( ${command_tool} getfwver | grep "FW Version" |awk -F":" '{print $2}' )

    IsRHV3Node
    if [ "$?" == "0" ]; then
        curVerGeDesVer=$( curVer_ge_desVer "${NVDIMM_Version}" "${Des_8G_NVDIMM_Version}")
        if [ ${curVerGeDesVer} -eq 0 ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:NVDIMM version ${NVDIMM_Version} is lower than the standard version ${Des_8G_NVDIMM_Version}" >>${RESULTFILE} 2>&1
            LOG "[${LINENO}] NVDIMM version ${NVDIMM_Version} is lower than the standard version ${Des_8G_NVDIMM_Version}"
        fi
    else
        nvdimmSpeed=$(dmidecode -t17 | grep "Synchronous Non-Volatile" -C 5 | grep "Speed:" | awk -F " " '{print$2}')
        curVerGeDesVer=$( curVer_ge_desVer "${NVDIMM_Version}" "${Des_16G_NVDIMM_Version}")
        # 如果是镁光的版本则默认通过
        if [ ${curVerGeDesVer} -eq 0 -a X"${nvdimmSpeed}" != X"2933" ]; then
            isPass=$(check_pass ${isPass} 4)
            echo "[ERR]INFO:NVDIMM version ${NVDIMM_Version} is lower than the standard version ${Des_16G_NVDIMM_Version}" >>${RESULTFILE} 2>&1
            LOG "[${LINENO}] NVDIMM version ${NVDIMM_Version} is lower than the standard version ${Des_16G_NVDIMM_Version}"
        fi
    fi

    echo "NVDIMM_Version:${NVDIMM_Version}"
    return ${isPass}
}

function getSAS_3008()
{
    local Des_SAS_FW=$(grep "^Des_SAS_FW" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_SAS_NVDATA=$(grep "^Des_SAS_NVDATA" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_SAS_x86_BIOS=$(grep "^Des_SAS_x86_BIOS" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_SAS_EFI_BIOS=$(grep "^Des_SAS_EFI_BIOS" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local sas3flashRltInfo=/tmp/_sas3flashRltInfo_f
    local isPass="${1}"

    /opt/driver/lsisas-mpt3sas-driver/sas3flash -list >${sas3flashRltInfo}
    SAS_FW=$( grep "Firmware Version" ${sas3flashRltInfo} | awk -F":" '{print $2}' |sed 's/ //g' )
    if [ "X" == "X${SAS_FW}" ]; then
        SAS_FW="NULL"
    fi
    SAS_NVDATA=$( grep "NVDATA Version (Default)" ${sas3flashRltInfo} | awk -F":" '{print $2}' |sed 's/ //g' )
    if [ "X" == "X${SAS_NVDATA}" ]; then
        SAS_NVDATA="NULL"
    fi
    SAS_x86_BIOS=$( grep "BIOS Version" ${sas3flashRltInfo} | awk -F":" '{print $2}' |sed 's/ //g' )
    if [ "X" == "X${SAS_x86_BIOS}" ]; then
        SAS_x86_BIOS="NULL"
    fi
    SAS_EFI_BIOS=$( grep "UEFI BSD Version" ${sas3flashRltInfo} | awk -F":" '{print $2}' | sed 's/ //g' )
    if [ "X" == "X${SAS_EFI_BIOS}" ]; then
        SAS_EFI_BIOS="NULL"
    fi

    rm -f ${sas3flashRltInfo}
    if [ "X${Des_SAS_FW}" != "X${SAS_FW}" ]; then
        isPass=$(check_pass ${isPass} 4)
        echo "[ERR]INFO:SAS FW version ${SAS_FW} is not match the standard version ${Des_SAS_FW}" >>${RESULTFILE} 2>&1
        LOG "[${LINENO}] SAS FW version ${SAS_FW} is not match the standard version ${Des_SAS_FW}"
    fi
    if [ "X${Des_SAS_NVDATA}" != "X${SAS_NVDATA}" ]; then
        isPass=$(check_pass ${isPass} 4)
        echo "[ERR]INFO:SAS NVDATA version ${SAS_NVDATA} is not match the standard version ${Des_SAS_NVDATA}" >>${RESULTFILE} 2>&1
        LOG "[${LINENO}] SAS NVDATA version ${SAS_NVDATA} is not match the standard version ${Des_SAS_NVDATA}"
    fi
    if [ "X${Des_SAS_x86_BIOS}" != "X${SAS_x86_BIOS}" ]; then
        isPass=$(check_pass ${isPass} 4)
        echo "[ERR]INFO:SAS x86 BIOS version ${SAS_x86_BIOS} is not match the standard version ${Des_SAS_x86_BIOS}" >>${RESULTFILE} 2>&1
        LOG "[${LINENO}] SAS x86 BIOS version ${SAS_x86_BIOS} is not match the standard version ${Des_SAS_x86_BIOS}"
    fi
    if [ "X${Des_SAS_EFI_BIOS}" != "X${SAS_EFI_BIOS}" ]; then
        isPass=$(check_pass ${isPass} 4)
        echo "[ERR]INFO:SAS EFI BIOS version ${SAS_EFI_BIOS} is not match the standard version ${Des_SAS_EFI_BIOS}" >>${RESULTFILE} 2>&1
        LOG "[${LINENO}] SAS EFI BIOS version ${SAS_EFI_BIOS} is not match the standard version ${Des_SAS_EFI_BIOS}"
    fi
    echo "SAS_Version:SAS_FW=${SAS_FW},SAS_NVDATA=${SAS_NVDATA},SAS_x86_BIOS=${SAS_x86_BIOS},SAS_EFI_BIOS=${SAS_EFI_BIOS}"
    return ${isPass}

}

function getSAS_3416()
{
    local Des_SAS_FW=$(grep "^Des_SAS_3416_FW" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local Des_SAS_NVDATA=$(grep "^Des_SAS_3416_NVDATA" /opt/huawei/snas/script/inspect_mml/quality_inspect.ini |awk -F"=" '{print $2}')
    local isPass="${1}"

    SAS_FW=$(cat /sys/class/scsi_host/host*/version_fw)
    if [ "X" == "X${SAS_FW}" ]; then
        SAS_FW="NULL"
    fi
    SAS_NVDATA=$(cat /sys/class/scsi_host/host*/version_nvdata_persistent)
    if [ "X" == "X${SAS_NVDATA}" ]; then
        SAS_NVDATA="NULL"
    fi

    if [ "X${Des_SAS_FW}" != "X${SAS_FW}" ]; then
        isPass=$(check_pass ${isPass} 4)
        echo "[ERR]INFO:SAS FW version ${SAS_FW} is not match the standard version ${Des_SAS_FW}" >>${RESULTFILE} 2>&1
        LOG "[${LINENO}] SAS FW version ${SAS_FW} is not match the standard version ${Des_SAS_FW}"
    fi
    if [ "X${Des_SAS_NVDATA}" != "X${SAS_NVDATA}" ]; then
        isPass=$(check_pass ${isPass} 4)
        echo "[ERR]INFO:SAS NVDATA version ${SAS_NVDATA} is not match the standard version ${Des_SAS_NVDATA}" >>${RESULTFILE} 2>&1
        LOG "[${LINENO}] SAS NVDATA version ${SAS_NVDATA} is not match the standard version ${Des_SAS_NVDATA}"
    fi

    echo "SAS_Version:SAS_FW=${SAS_FW},SAS_NVDATA=${SAS_NVDATA}"
    return ${isPass}
}

function getSAS()
{
    local isPass="${1}"

    is3008SasCard
    if [ $? -eq 0 ];then
        getSAS_3008 "${isPass}"
        isPass=$?
    else
        getSAS_3416 "${isPass}"
        isPass=$?
    fi

    return $isPass
}

#获取OFED版本
function GetOFEDVersion()
{
    local ofedVer="NULL"
    local tmpInfo=""
    local iRet=0
    tmpInfo=$(ofed_info -s)
    iRet=$?
    if [ $? -ne 0 ]; then
        LOG "[$LINENO]get ofed info fail,iRet=${iRet},tmpInfo=${tmpInfo}"
        echo ${ofedVer}
        return 0
    fi

    if [[ "${tmpInfo}" =~ "MLNX_OFED_LINUX-3.2" ]]; then
        ofedVer="3.2"
    elif [[ "${tmpInfo}" =~ "MLNX_OFED_LINUX-4.2" ]]; then
        ofedVer="4.2"
    elif [[ "${tmpInfo}" =~ "OFED-internal-4.4" ]]; then
        ofedVer="4.4"
    elif [[ "${tmpInfo}" =~ "OFA-LINUX-4.17" ]]; then
        ofedVer="4.17"
    else
        ofedVer="NULL"
        LOG "[$LINENO]no match ofed info,tmpInfo=${tmpInfo}"
    fi

    echo ${ofedVer}
    return 0
}

function CheckRoceIBFirmware()
{
    local mstInfo="$1"
    local idx=""
    local netType=""
    local netName=""
    local curfwVersion=""
    local tmpCardtype=""
    local flintInfo=""
    local businfo=""
    local tmpPSID=""
    local tmpinfo=""
    local linkinfo=""
    local iret=0
    local Result=""
    local isPass=0

    for idx in ${ROCE_IB_LIST[@]}; do
        #获取网口名字，businfo
        tmpinfo=$(echo "${mstInfo}" | grep -A1 "${idx}" | grep "bus:dev.fn" | awk '{print $1}' | awk -F'=' '{print $2}')
        businfo=$(echo "${tmpinfo}" | awk -F':' '{print $2 ":" $3}')
        linkinfo=$(find /sys/class/net -maxdepth 1 -type l -exec readlink -e {} \; | grep "${tmpinfo}" | head -1)
        netName=$(basename ${linkinfo})

        curfwVersion=$( ethtool -i $netName | grep "firmware-version" | awk '{print $2}' )
        tmpPSID=$( ethtool -i $netName | grep "firmware-version" | awk '{print $3}' | awk -F "[()]" '{print $2}' )

        #获取网卡类型，PSID为HUA0010110034的网卡做特殊处理，看实际工作是在10g,还是25g，其他类型的依据配置文件获取
        if [ "${tmpPSID}" == "HUA0010110034" ]; then
            tmpinfo=$(ethtool "${netName}" 2>&1)
            iret=$?
            tmpCardtype=$(echo "${tmpinfo}" | grep "Speed:" | awk '{gsub("Mb/s","",$2);printf "%d",$2/1000}')
            if [ $? -eq 0 ] && [ "${tmpCardtype}" == "10" -o "${tmpCardtype}" == "25" ]; then
                netType="${tmpCardtype}g RoCE(V3)"
            else
                echo "[ERR]INFO:BDF (${businfo}) NetName (${netName}). Get network adapter type failed." >>${RESULTFILE} 2>&1
                isPass=1
                LOG "[${LINENO}] cannot recognize the type of card,idx=[${idx}],PSID:${tmpPSID},tmpCardtype=[${tmpCardtype}]，iret=${iret}"
                continue
            fi
        elif [ "${tmpPSID}" == "HUA0000000001" ]; then
            #此卡为外购卡没有配套关系，不需要检查
            Result="${tmpPSID} No need to check because there is no mapping relationship;${Result[@]}"
            LOG "[${LINENO}] skip it,idx=[${idx}],PSID:${tmpPSID}"
            continue
        elif [ "${tmpPSID}" == "HUA0000000023" ];then
            # mlx的RoCE卡-25g RoCE(V5)，已投到4.4使用，配置文件未更新，巡检规避
            netType=$(cat ${ofedConfigPath}/ofed*.conf |grep ";${tmpPSID};"| grep -v '^#' | head -1 |awk -F';' '{print $1}')
            Result="Type=${netType},Version=${curfwVersion};${Result[@]}"
            LOG "[${LINENO}]tmpPSID:${tmpPSID},Type:${netType},BDF:${businfo},NetName:${netName},OFED_Version:${OFED_VER},Firmware_Version:${curfwVersion},iret=[${iret}]."
            continue
        else
            netType=$(grep ";${tmpPSID};" "${ofedConfigPath}/ofed${OFED_VER}.conf" 2>&1 | grep -v '^#' | head -1 |awk -F';' '{print $1}')
            if [ "${netType}X" == "X" ]; then
                netType="null"
                Result="Type=${netType},Version=${curfwVersion};${Result[@]}"
                LOG "[${LINENO}]tmpPSID:${tmpPSID}(Failed to obtain the PSID),Type:${netType},BDF:${businfo},NetName:${netName},OFED_Version:${OFED_VER},Firmware_Version:${curfwVersion},iret=[${iret}]."
                continue
            fi
        fi

        #拼接字符串(网卡类型;网卡PSID;网卡固件版本;OFED版本)
        tmpinfo="${netType};${tmpPSID};${curfwVersion};${OFED_VER}"
        #在配套表格中查询
        cat "${ofedConfigPath}/ofed${OFED_VER}.conf" | grep -v "^#" | grep "${tmpinfo}" >/dev/null
        iret=$?
        #判断是否与配置文件中固件配套关系匹配
        if [ ${iret} -eq 0 ]; then
            Result="Type=${netType},Version=${curfwVersion};${Result[@]}"
        else
            local Des_fwVersion=`cat "${ofedConfigPath}/ofed${OFED_VER}.conf" | grep ${tmpPSID} | grep ${OFED_VER} | grep "${netType}"| awk -F';' '{print $3}'`
            curVerGeDesVer=$( curVer_ge_desVer "${curfwVersion}" "${Des_fwVersion}")
            if [ ${curVerGeDesVer} -eq 0 ]; then
                isPass=$(check_pass ${isPass} 4)
                echo "[ERR]INFO:NET version ${curfwVersion} is not match the standard version ${Des_fwVersion}." >>${RESULTFILE} 2>&1
            fi
            Result="Type=${netType},Version=${curfwVersion};${Result[@]}"
        fi
        LOG "[${LINENO}]tmpPSID:${tmpPSID},Type:${netType},BDF:${businfo},NetName:${netName},OFED_Version:${OFED_VER},Firmware_Version:${curfwVersion},iret=[${iret}]."
    done

    echo "Firmware_Version:${Result}"
    return ${isPass}
}

#ARMofed4.17目前不检查Firmware_Version,只检查ofed版本和网卡配套关系(ofed4.17-->Hi1822#driver: hinic)
function Checkofed_417()
{
    local ethName=$(ls /etc/sysconfig/network-scripts/ifcfg-* | grep -wv lo | sed 's/\/etc\/sysconfig\/network-scripts\/ifcfg-//' | grep -v '\.')
    local ethInfo=""
    local curfwVersion=""
    local businfo=""
    local iRet=0
    local errInfo=""
    local driver=""
    local netType=""
    local Result=""
    local isLite=1
    get_cluster_lite_deploy
    isLite=$?

    for item in ${ethName};do
        if [[ "${item}" =~ "NIC" ]]; then
            LOG "[$LINENO]no check nic,item=${item}"
            continue
        fi
        #单节点lite的后端不插网线,不检查
        if [ "${isLite}" = "0" ]; then
            local backup_port=$(get_lite_backup_netport)
            if [[ "${backup_port}" =~ "${item}" ]]; then
                LOG "[$LINENO]no check lite_backup_netport,item=${item}"
                continue
            fi
        fi
        netName="${item}"
        ethInfo=$(ethtool -i ${item} 2>&1)
        iRet=$?
        if [ ${iRet} -ne 0 ]; then
            errInfo="INFO:Get network adapter info from command(${ethtool -i ${item}}) failed."
            LOG "[${LINENO}]INFO:NetName (${netName}). get network adapter info failed.iRet=${iRet}"
            break
        fi


        businfo=$(echo "${ethInfo}" | grep -w "bus-info" | awk -F':' '{print $3 ":" $4}')
        curfwVersion=$(echo "${ethInfo}" | grep -w "firmware-version" | awk -F':' '{sub("^[ \t]*","",$2);print $2}')
        driver=$(echo "${ethInfo}" | grep -w "driver" | awk -F':' '{sub("^[ \t]*","",$2);print $2}')

        if [ "${driver}X" = "hinicX" ] || [ "${driver}X" = "bondingX" ]; then
            bondInfo=$( cat /proc/net/bonding/${item} )
            if [ $? -eq 0 ];then
                nicbond=$( cat ${bondInfo} | grep NIC | wc -l )
                if [ ${nicbond} -gt 0 ]; then
                    LOG "[$LINENO]no check nic match bond,item=${item}"
                    continue
                fi
            fi
            ethInfo=$(ethtool "${netName}" 2>&1)
            iRet=$?
            tmpCardtype=$(echo "${ethInfo}" | grep "Speed:" | awk '{gsub("Mb/s","",$2);printf "%d",$2/1000}')
            if [ ${iRet} -eq 0 ] && [ "${tmpCardtype}" == "10" -o "${tmpCardtype}" == "25" -o "${tmpCardtype}" == "20" -o "${tmpCardtype}" == "50" ]; then
                netType="${tmpCardtype}g RoCE(1822)"
            else
                errInfo="INFO:BDF (${businfo}) NetName (${netName}). Get network adapter type failed."
                isPass=1
                LOG "[${LINENO}]INFO:BDF (${businfo}) NetName (${netName}). get network adapter type failed. iRet=$iRet"
                break
            fi
        else
            errInfo="INFO:BDF (${businfo}) NetName(${netName}),The OFED (${OFED_VER}) version does not match the network adapter."
            LOG "[${LINENO}]INFO:NetName (${netName}). driver=${driver},businfo=${businfo}"
            break
        fi
        Result="Type=${netType},Version=${curfwVersion};${Result[@]}"
    done

    if [ "${errInfo}X" != "X" ]; then
        isPass=1
        echo "[ERR]${errInfo}" >>${RESULTFILE}
    else
        echo "Firmware_Version:${Result}"
    fi

    return ${isPass}
}

function getIBandRoce()
{
    local ofedVersion=""
    local mstinfo=""
    local iret=0
    local IsRoceFlag=0
    local IsIBFlag=0
    local RoceorIB_Version=""
    local isPass=${1}

    #获取OFED版本号
    OFED_VER="$(GetOFEDVersion)"
    ofedVersion="${OFED_VER}"
    if [ "${ofedVersion}" = "NULL" ]; then
        echo "[ERR]INFO:Get ofed version failed." >>${RESULTFILE}
        isPass=1
        LOG "[$LINENO]get ofed version error"
        echo "RoceorIB_Version:NULL"
        return ${isPass}
    fi

    #arm里面ofed4.4按照V5逻辑从配置文件ofed4.4.conf中获取信息; ofed4.17做特殊处理
    if [ "${OFED_VER}" = "4.17" ]; then
        RoceorIB_Version=$(Checkofed_417)
        if [ "$?" != 0 ]; then
            isPass=1
        fi
        echo "RoceorIB_Version:${RoceorIB_Version}"
        return ${isPass}
    fi

    mst start >/dev/null
    iret=$?
    if [ ${iret} -ne 0 ]; then
        echo "[ERR]INFO:Execute command (mst start) failed!" >>${RESULTFILE}
        isPass=1
        LOG "[${LINENO}]mst start exec failed,iret=$iret."
        echo "RoceorIB_Version:${RoceorIB_Version}"
        return ${isPass}
    fi

    #列出当前系统设备上的ROCE与IB卡对应的MST设备
    mstinfo=$(mst status)
    iret=$?
    if [ ${iret} -ne 0 ]; then
        echo "[ERR]INFO:Execute command (mst status) failed!" >>${RESULTFILE}
        isPass=1
        LOG "[${LINENO}]mst status exec failed,iret=$iret."
        echo "RoceorIB_Version:${RoceorIB_Version}"
        return ${isPass}
    fi

    ROCE_IB_LIST=$(echo "${mstinfo}" | grep -E "mt4117_pciconf|mt4099_pci_|mt4115_pciconf|mt4119_pciconf" | awk '{print $1}')
    if [ -z "${ROCE_IB_LIST}" ] ; then
        echo "RoceorIB_Version:no IB/RoCE network adapter exists"
        LOG "[${LINENO}]No check is required because no IB/RoCE network adapter exists."
        return ${isPass}
    fi

    #检查配置文件是否存在
    if [ ! -f "${ofedConfigPath}/ofed${OFED_VER}.conf" ]; then
        echo "[ERR]INFO:Get network adapter information failed." >>${RESULTFILE}
        isPass=1
        LOG "[${LINENO}]Get Congfig file(${ofedConfigPath}/ofed${OFED_VER}.conf) failed"
        echo "RoceorIB_Version:${RoceorIB_Version}"
        return ${isPass}
    fi

    RoceorIB_Version=$(CheckRoceIBFirmware "${mstinfo}")
    if [ "$?" != 0 ]; then
        isPass=1
    fi
    echo "RoceorIB_Version:${RoceorIB_Version}"
    return ${isPass}
}

function CheckHardwareVersion4RH()
{
    local isPass=0
    local PRODUCT_NAME=$(dmidecode -t 1 | grep "Product Name:" | awk -F: '{print $2}' | sed 's/^\s*//;s/\s*$//')
    
    IBandRock_Version=$( getIBandRoce ${isPass} )
    isPass=$?

    BMC_Version=$( getBMC ${isPass} )
    isPass=$?

    NVDIMM_Version=$( getNVDIMM ${isPass} )
    isPass=$?

    SES_Version=$( getSES  ${isPass} )
    isPass=$?

    SAS_Version=$( getSAS ${isPass} )
    isPass=$?

    BIOS_Version=$( getBIOS ${isPass} )
    isPass=$?

    CPLD_Version=$( getCPLD4RH ${isPass} )
    isPass=$?

    if [ "${PRODUCT_NAME}" == "DP4200" -o "${PRODUCT_NAME}" == "DP2200" ]; then
        isPass=0
        LOG "[$FUNCNAME]${CurInspectFun}_Pass ${isPass},DP node need not to check hardware version"
    fi

    echo "${SES_Version}||${SAS_Version}||${IBandRock_Version}||${BMC_Version}||${BIOS_Version}||${CPLD_Version}||${NVDIMM_Version}" >>${RESULTFILE} 2>&1
    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
    LOG "[$FUNCNAME]${CurInspectFun}_Pass ${isPass},Only check 7.1.1.SPC500 version"
}

function CheckHardwareVersion4TS()
{
    local isPass=0

    IBandRoce_Version=$( getIBandRoce ${isPass} )
    isPass=$?

    BMC_Version=$( getBMC ${isPass} )
    isPass=$?

    # 不再检测BBU、IOB、iob_cpld固件版本
    BIOS_Version=$( getBIOS ${isPass} )
    isPass=$?

    CPLD_Version=$( getCPLD4TS ${isPass} )
    isPass=$?

    #注意：TS和RH混合场景需保持输出的参数一致
    SES_Version="SES_Version:--"
    SAS_Version="SAS_Version:--"
    NVDIMM_Version="NVDIMM_Version:--"

    echo "${SES_Version}||${SAS_Version}||${IBandRoce_Version}||${BMC_Version}||${BIOS_Version}||${CPLD_Version}||${NVDIMM_Version}" >>${RESULTFILE} 2>&1
    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
    LOG "[$FUNCNAME]${CurInspectFun}_Pass ${isPass},Only check 7.1.0 version"
}


function CheckHardwareVersion()
{
    declare -A equalVersion=(
        ["V100R006C30SPC505"]="7.0.2"
        ["V100R006C30SPC510"]="7.0.2"
        ["V100R006C30SPC700"]="7.1.0"
        ["V100R006C30SPC900"]="7.1.1.SPC1"
    )
    #检查当前集群版本号
    if [ "X${CheckVersion}" != "X${Product_Version}" ] && [ "X${equalVersion[${Product_Version}]}" != "X${CheckVersion}" ]; then
        isPass=0
        echo "INFO:Only check ${CheckVersion} version,Other versions of nodes are not checked." >>${RESULTFILE} 2>&1 #所有节点版本一致
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        LOG "[$FUNCNAME]${CurInspectFun}_Pass ${isPass},Only check ${CheckVersion} version,current version ${Product_Version}."
        exit 0
    fi

    #只检查RH和TS节点
    IsRHNode
    iRetRH=$?
    IsTSNode
    iRetTs=$?
    if [ "${iRetRH}" == "0" ]; then
        CheckHardwareVersion4RH
    elif [ "${iRetTs}" == "0" ]; then
        CheckHardwareVersion4TS
    else
        isPass=0
        echo "SES_Version:not involve||SAS_Version:--||IBandRoce_Version:--||BMC_Version:--||BIOS_Version:--||CPLD_Version:--||NVDIMM_Version:--" >>${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        LOG "[$FUNCNAME]${CurInspectFun}_Pass ${isPass},Only check RH or TS Node"
    fi
}
SNLIST="
2102352ETQ10K3000537
2102352ETQ10K3000541
2102352ETQ10K3000538
2102352ETQ10K3000548
2102352ETQ10K3000542
2102352ETQ10K3000547
2102352ETQ10K4000141
2102352ETQ10K4000147
2102352ETQ10K4000149
2102352ETQ10K4000146
2102352ETQ10K4000143
2102352ETQ10K4000144
2102352ETQ10K4000142
2102352ETQ10K4000148
2102352ETQ10K4000153
2102352ETQ10K4000154
2102352SEW10K4000012
2102352SEW10K4000013
2102352SEW10K4000007
2102352SEW10K4000011
2102352SEW10K4000014
2102352SEW10K4000008
2102352SEX10K4000005
2102352SEX10K4000010
2102352SUG10K4000002
2102352SNG10K4000001
2102352SCQN0K5000015
2102352SCQN0K5000001
2102352SCQN0K5000013
2102352RXDN0K5000014
2102352SKXN0K6000006
2102352SKXN0K6000004
2102352SKXN0K6000005
2102352SKXN0K6000022
2102352SKXN0K6000008
2102352SKXN0K6000009
2102352SKXN0K6000015
2102352SKXN0K6000018
2102352SKXN0K6000044
2102352SKXN0K6000010
2102352SKXN0K6000017
2102352SKXN0K6000043
2102352SKXN0K6000023
2102352SKXN0K6000030
2102352SKXN0K6000011
2102352SKXN0K6000016
2102353BHKN0K6000003
2102353CVJN0K6000029
2102353CVKN0K6000005
2102353CSW10K7000001
2102352TWK10KA000168
2102352TWK10KA000164
2102352TWK10KA000170
2102352TWK10KA000169
2102352TWK10KA000162
2102352TWK10KA000167
2102352TWK10KA000166
2102352TWK10KA000163
2102352TWK10KA000171
2102352TWK10KA000165
2102352TWK10KA000147
2102352TWK10KA000152
2102352TWK10KA000146
2102352TWK10KA000150
2102352TWK10KA000155
2102352TWK10KA000148
2102352TWK10KA000154
2102352TWK10KA000158
2102352TWK10KA000157
2102352TWK10KA000151
2102352TWK10KA000149
2102352TWK10KA000153
2102352TWK10KA000156
2102352TWK10KA000077
2102352TWK10KA000074
2102352TWK10KA000070
2102352TWK10KA000072
2102352TWK10KA000069
2102352TWK10KA000071
2102352TWK10KA000067
2102352TWK10KA000062
2102352TWK10KA000066
2102352TWK10KA000076
2102352TWK10KA000073
2102352TWK10KA000078
2102352TWK10KA000075
2102352TWK10KA000079
2102352TWK10KA000068
2102352TWK10KA000064
2102352TWK10KA000063
2102352TWK10KA000065
2102352TWK10KA000043
2102352TWK10KA000045
2102352TWK10KA000050
2102352TWK10KA000054
2102352TWK10KA000051
2102352TWK10KA000047
2102352TWK10KA000052
2102352TWK10KA000059
2102352TWK10KA000057
2102352TWK10KA000044
2102352TWK10KA000061
2102352TWK10KA000056
2102352TWK10KA000042
2102352TWK10KA000060
2102352TWK10KA000048
2102352TWK10KA000049
2102352TWK10KA000058
2102352TWK10KA000055
2102352TWK10KA000041
2102352TWK10KA000046
2102353BRLN0KA000010
2102353BRLN0KA000004
2102353BRLN0KA000011
2102353BRLN0KA000001
2102353BRLN0KA000005
2102353BRLN0KA000006
2102353BRLN0KA000002
2102353BRLN0KA000007
2102352TWK10KA000181
2102352TWK10KA000177
2102352TWK10KA000173
2102352TWK10KA000172
2102352TWK10KA000182
2102352TWK10KA000176
2102352TWK10KA000175
2102352TWK10KA000174
2102352TWK10KA000178
2102352TWK10KA000180
2102352TWK10KA000179
2102352TPQ10KA000012
2102352TPQ10KA000011
2102352TPQ10KA000010
2102352TWK10KA000081
2102352TWK10KA000086
2102352TWK10KA000082
2102352TWK10KA000085
2102352TWK10KA000084
2102352TWK10KA000083
2102352TWK10KA000080
2102352TWK10KA000097
2102352TWK10KA000099
2102352TWK10KA000098
2102352TWK10KA000101
2102352TWK10KA000102
2102352TWK10KA000100
2102352TWK10KA000090
2102352TWK10KA000089
2102352TWK10KA000088
2102352TWK10KA000091
2102352TWK10KA000087
2102352TWK10KA000095
2102352TWK10KA000093
2102352TWK10KA000094
2102352TWK10KA000092
2102353FWNN0KA000029
2102353FWNN0KA000012
2102353FWNN0KA000025
2102353FWNN0KA000016
2102352TWK10KA000040
2102352TWK10KA000038
2102352TWK10KA000039
2102352TPQ10KA000013
2102352TPQ10KA000015
2102352TPQ10KA000014
2102353EYK10KA000002
2102353EYK10KA000003
2102353EYK10KA000001
2102353CXVN0KA000009
2102353CXVN0KA000010
2102352TWK10KA000096
2102352TWK10KB000005
2102352TWK10KB000006
2102352TWK10KB000009
2102352TWK10KB000007
2102352TWK10KB000008
2102352TWK10KB000004
2102353KDJN0KB000009
2102353FLBN0KB000011
2102353FLBN0KB000009
2102353FLBN0KB000010
2102352TPQ10KB000033
2102352TPQ10KB000032
2102352TPQ10KB000023
2102352TPQ10KB000024
2102352TPQ10KB000025
2102352TPQ10KA000028
2102352TWK10KB000043
2102352TWK10KB000042
2102352TWK10KB000044
2102352TWK10KB000041
2102352TWK10KB000040
2102352TWK10KA000125
2102352TWK10KA000137
2102352TWK10KA000138
2102352TWK10KA000127
2102352TWK10KA000143
2102352TWK10KA000120
2102352TWK10KA000121
2102352TWK10KA000128
2102352TWK10KA000134
2102352TWK10KA000118
2102352TWK10KA000142
2102352TWK10KA000119
2102352TWK10KA000145
2102352TWK10KA000139
2102352TWK10KA000133
2102352TWK10KA000123
2102352TWK10KA000124
2102352TWK10KA000140
2102352TWK10KA000117
2102352TWK10KA000135
2102352TWK10KA000126
2102352TWK10KA000136
2102352TWK10KA000141
2102352TWK10KA000116
2102352TWK10KA000144
2102352TWK10KA000130
2102352TWK10KA000132
2102352TWK10KA000129
2102352TWK10KA000122
2102352TWK10KA000131
2102352TWK10KA000109
2102352TWK10KA000115
2102352TWK10KA000112
2102352TWK10KA000110
2102352TWK10KA000111
2102352TWK10KA000108
2102352TWK10KA000114
2102352TWK10KA000107
2102352TWK10KA000106
2102352TWK10KA000113
2102352TWK10KB000175
2102352TWK10KB000184
2102352TWK10KB000188
2102352TWK10KB000189
2102352TWK10KB000187
2102352TWK10KB000191
2102352TWK10KB000176
2102352TWK10KB000190
2102352TWK10KB000185
2102352TWK10KB000186
2102352TWK10KB000182
2102352TWK10KB000179
2102352TWK10KB000178
2102352TWK10KB000172
2102352TWK10KB000180
2102352TPQ10KA000021
2102352TPQ10KA000016
2102352TPQ10KA000020
2102352TPQ10KA000024
2102352TPQ10KA000022
2102352TPQ10KA000023
2102352TPQ10KA000018
2102352TPQ10KA000017
2102352TWK10KA000240
2102352TWK10KA000238
2102352TWK10KA000236
2102352TWK10KA000235
2102352TWK10KA000234
2102352TWK10KA000237
2102352TWK10KA000239
2102352TWK10KA000242
2102352TWK10KA000241
2102352TWK10KA000233
2102352TWK10KA000203
2102352TWK10KA000201
2102352TWK10KA000204
2102352TWK10KA000191
2102352TWK10KA000187
2102352TWK10KA000199
2102352TWK10KA000185
2102352TWK10KA000190
2102352TWK10KA000194
2102352TWK10KA000192
2102352TWK10KA000196
2102352TWK10KA000200
2102352TWK10KA000193
2102352TWK10KA000189
2102352TWK10KA000186
2102352TWK10KA000184
2102352TWK10KA000183
2102352TWK10KA000195
2102352TWK10KA000198
2102352TWK10KA000188
2102352TWK10KA000197
2102352TWK10KA000205
2102352TWK10KA000206
2102352TWK10KA000202
2102352TWK10KA000161
2102352TWK10KA000160
2102352TWK10KA000159
2102352TWK10KB000137
2102352TWK10KB000143
2102352TWK10KB000140
2102352TWK10KB000149
2102352TWK10KB000150
2102352TWK10KB000145
2102352TWK10KB000142
2102352TWK10KB000144
2102352TWK10KB000138
2102352TWK10KB000139
2102352TWK10KB000148
2102352TWK10KB000146
2102352TWK10KB000147
2102352TWK10KB000164
2102352TWK10KB000165
2102352TWK10KB000163
2102352TPQ10KB000026
2102352TPQ10KB000028
2102352TPQ10KB000027
2102352TWK10KA000211
2102352TWK10KA000208
2102352TWK10KA000209
2102352TWK10KA000212
2102352TWK10KA000207
2102352TWK10KA000210
2102352TPQ10KB000022
2102352TPQ10KB000021
2102352TPQ10KB000020
2102352TPQ10KB000019
2102352TWK10KB000130
2102352TWK10KB000128
2102352TWK10KB000126
2102352TWK10KB000129
2102352TPQ10KB000043
2102352TPQ10KB000045
2102352TPQ10KB000042
2102352TPQ10KB000044
2102352TPQ10KB000029
2102352TPQ10KB000031
2102352TPQ10KB000030
2102352TWK10KB000194
2102352TWK10KB000192
2102352TWK10KB000193
2102352TWK10KB000001
2102352TWK10KB000003
2102352TWK10KB000002
2102352TWK10KB000012
2102352TWK10KC001554
2102352TWK10KC001553
2102352TWK10KC001552
2102352TWK10KC000738
2102352TWK10KC000229
2102352TWK10KC000238
2102352TWK10KC000226
2102352TWK10KC000228
2102352TWK10KC000240
2102352TWK10KC000239
2102352TWK10KC000230
2102352TWK10KC000235
2102352TWK10KC000237
2102352TWK10KC000227
2102352TWK10KC000232
2102352TWK10KC000231
2102352TWK10KC000234
2102352TWK10KC000241
2102352TWK10KC000543
2102352TWK10KC000362
2102352TWK10KC000366
2102352TWK10KC000363
2102352TWK10KC000364
2102352TWK10KC000367
2102352TWK10KC000365
2102352TWK10KC000371
2102352TWK10KC000361
2102352TWK10KC000369
2102352TWK10KC000358
2102352TWK10KC000405
2102352TWK10KC000400
2102352TWK10KC000276
2102352TWK10KC000407
2102352TWK10KC000295
2102352TWK10KC000277
2102352TWK10KC000289
2102352TWK10KC000288
2102352TWK10KC000403
2102352TWK10KC000398
2102352TWK10KC000304
2102352TWK10KC000302
2102352TWK10KC000286
2102352TWK10KC000300
2102352TWK10KC000402
2102352TWK10KC000285
2102352TWK10KC000394
2102352TWK10KC000382
2102352TWK10KC000297
2102352TWK10KC000301
2102352TWK10KC000372
2102352TWK10KC000386
2102352TWK10KC000395
2102352TWK10KC000401
2102352TWK10KC000385
2102352TWK10KC000410
2102352TWK10KC000383
2102352TWK10KC000356
2102352TWK10KC000298
2102352TWK10KC000287
2102352TWK10KC000409
2102352TWK10KC000396
2102352TWK10KC000411
2102352TWK10KC000299
2102352TWK10KC000305
2102352TWK10KC000306
2102352TWK10KC000278
2102352TWK10KC000399
2102352TWK10KC000384
2102352TWK10KC000357
2102352TWK10KC000388
2102352TWK10KC000408
2102352TWK10KC000294
2102352TWK10KC000387
2102352TWK10KC000275
2102352TWK10KC000296
2102352TWK10KC000279
2102352TWK10KC000393
2102352TWK10KC000392
2102352TWK10KC000397
2102352TWK10KC000391
2102352TWK10KC000404
2102352TWK10KC000406
2102352TWK10KC000389
2102352TWK10KC000390
2102352TWK10KC000416
2102352TWK10KC000370
2102352TWK10KC000418
2102352TWK10KC000414
2102352TWK10KC000281
2102352TWK10KC000413
2102352TWK10KC000415
2102352TWK10KC000117
2102352TWK10KC000196
2102352TWK10KC000197
2102352TWK10KC000198
2102352TWK10KC000202
2102352TWK10KC000199
2102352TWK10KC000204
2102352TWK10KC000203
2102352TWK10KC000158
2102352TWK10KC000137
2102352TWK10KC000165
2102352TWK10KC000155
2102352TWK10KC000157
2102352TWK10KC000147
2102352TWK10KC000124
2102352TWK10KC000122
2102352TWK10KC000195
2102352TWK10KC000125
2102352TWK10KC000126
2102352TWK10KC000119
2102352TWK10KC000140
2102352TWK10KC000160
2102352TWK10KC000161
2102352TWK10KC000142
2102352TWK10KC000127
2102352TWK10KC000141
2102352TWK10KC000143
2102352TWK10KC000159
2102352TWK10KC000162
2102352TWK10KC000123
2102352TWK10KC000191
2102352TWK10KC000181
2102352TWK10KC000208
2102352TWK10KC000145
2102352TWK10KC000144
2102352TWK10KC000175
2102352TWK10KC000182
2102352TWK10KC000132
2102352TWK10KC000192
2102352TWK10KC000178
2102352TWK10KC000131
2102352TWK10KC000193
2102352TWK10KC000176
2102352TWK10KC000118
2102352TWK10KC000179
2102352TWK10KC000174
2102352TWK10KC000206
2102352TWK10KC000156
2102352TWK10KC000189
2102352TWK10KC000129
2102352TWK10KC000133
2102352TWK10KC000207
2102352TWK10KC000194
2102352TWK10KC000130
2102352TWK10KC000183
2102352TWK10KC000190
2102352TWK10KC000186
2102352TWK10KC000205
2102352TWK10KC000184
2102352TWK10KC000187
2102352TWK10KC000185
2102352TWK10KC000180
2102352TWK10KC000188
2102352TWK10KC000128
2102352TWK10KC000323
2102352TWK10KC000445
2102352TWK10KC000337
2102352TWK10KC000330
2102352TWK10KC000341
2102352TWK10KC000338
2102352TWK10KC000313
2102352TWK10KC000340
2102352TWK10KC000332
2102352TWK10KC000326
2102352TWK10KC000339
2102352TWK10KC000329
2102352TWK10KC000333
2102352TWK10KC000335
2102352TWK10KC000318
2102352TWK10KC000319
2102352TWK10KC000317
2102352TWK10KC000322
2102352TWK10KC000314
2102352TWK10KC000336
2102352TWK10KC000320
2102352TWK10KC000325
2102352TWK10KC000334
2102352TWK10KC000327
2102352TWK10KC000328
2102352TWK10KC000324
2102352TWK10KC000446
2102352TWK10KC000438
2102352TWK10KC000315
2102352TWK10KC000331
2102352TWK10KC000422
2102352TWK10KC000447
2102352TWK10KC000424
2102352TWK10KC000427
2102352TWK10KC000316
2102352TWK10KC000321
2102352TWK10KC000434
2102352TWK10KC000312
2102352TWK10KC000441
2102352TWK10KC000430
2102352TWK10KC000433
2102352TWK10KC000439
2102352TWK10KC000450
2102352TWK10KC000436
2102352TWK10KC000349
2102352TWK10KC000310
2102352TWK10KC000354
2102352TWK10KC000352
2102352TWK10KC000448
2102352TWK10KC000348
2102352TWK10KC000308
2102352TWK10KC000343
2102352TWK10KC000311
2102352TWK10KC000342
2102352TWK10KC000345
2102352TWK10KC000351
2102352TWK10KC000353
2102352TWK10KC000355
2102352TWK10KC000350
2102352TWK10KC000344
2102352TWK10KC000309
2102352TWK10KC000256
2102352TWK10KC000257
2102352TWK10KC000255
2102352TWK10KC000268
2102352TWK10KC000266
2102352TWK10KC000263
2102352TWK10KC000261
2102352TWK10KC000258
2102352TWK10KC000270
2102352TWK10KC000262
2102352TWK10KC000267
2102352TWK10KC000259
2102352TWK10KC000260
2102352TWK10KC000265
2102352TWK10KC000269
2102352TWK10KC000264
2102353KLBN0KC000006
2102353KLBN0KC000009
2102353KLCN0KC000001
2102353KLCN0KC000002
2102352TWK10KC001343
2102352TWK10KC001337
2102352TWK10KC001435
2102352TWK10KC001336
2102352TWK10KC001345
2102352TWK10KC001339
2102352TWK10KC001344
2102352TWK10KC001242
2102352TWK10KC001340
2102352TWK10KC001341
2102352TWK10KC001346
2102352TWK10KC001243
2102352TWK10KC001251
2102352TWK10KC001250
2102352TWK10KC001256
2102352TWK10KC001255
2102352TWK10KC001241
2102352TWK10KC001254
2102352TWK10KC001429
2102352TWK10KC001436
2102352TWK10KC001430
2102352TWK10KC001433
2102352TWK10KC001431
2102352TWK10KC001518
2102352TWK10KC001419
2102352TWK10KC001519
2102352TWK10KC001508
2102352TWK10KC001437
2102352TWK10KC001363
2102352TWK10KC001418
2102352TWK10KC001456
2102352TWK10KC001458
2102352TWK10KC001453
2102352TWK10KC001455
2102352TWK10KC001454
2102352TWK10KC001452
2102352TWK10KC001457
2102352TWK10KC001443
2102352TWK10KC001448
2102352TWK10KC001438
2102352TWK10KC001348
2102352TWK10KC001365
2102352TWK10KC001347
2102352TWK10KC001357
2102352TWK10KC001401
2102352TWK10KC001404
2102352TWK10KC001405
2102352TWK10KC001249
2102352TWK10KC001400
2102352TWK10KC001247
2102352TWK10KC001252
2102352TWK10KC001245
2102352TWK10KC001406
2102352TWK10KC001253
2102352TWK10KC001445
2102352TWK10KC001444
2102352TWK10KC001358
2102352TWK10KC001449
2102352TWK10KC001399
2102352TWK10KC001248
2102352TWK10KC001507
2102352TWK10KC001408
2102352TWK10KC001450
2102352TWK10KC001451
2102352TWK10KC001407
2102352TWK10KC001442
2102352TWK10KC001447
2102352TWK10KC001446
2102352TWK10KC000047
2102352TWK10KC000023
2102352TWK10KC000046
2102352TWK10KC000021
2102352TWK10KC000035
2102352TWK10KC000036
2102352TWK10KC000017
2102352TWK10KC000019
2102352TWK10KC000045
2102352TWK10KC000024
2102352TWK10KC000038
2102352TWK10KC000040
2102352TWK10KC000025
2102352TWK10KC000034
2102352TWK10KC000041
2102352TWK10KC000032
2102352TWK10KC000026
2102352TWK10KC000037
2102352TWK10KC000020
2102352TWK10KC000039
2102352TWK10KC000029
2102352TWK10KC000031
2102352TWK10KC000033
2102352TWK10KC000044
2102352TWK10KC000018
2102352TWK10KC000027
2102352TWK10KC000028
2102352TWK10KC000030
2102352TWK10KC000022
2102352TWK10KC000042
2102352TWK10KC000043
2102352TWK10KC000058
2102352TWK10KC000069
2102352TWK10KC000064
2102352TWK10KC000052
2102352TWK10KC000057
2102352TWK10KC000066
2102352TWK10KC000054
2102352TWK10KC000055
2102352TWK10KC000049
2102352TWK10KC000048
2102352TWK10KC000060
2102352TWK10KC000067
2102352TWK10KC000059
2102352TWK10KC000050
2102352TWK10KC000051
2102352TWK10KC000056
2102352TWK10KC000072
2102352TWK10KC000063
2102352TWK10KC000073
2102352TWK10KC000065
2102352TWK10KC000053
2102352TWK10KC000061
2102352TWK10KC000070
2102352TWK10KC000071
2102352TWK10KC000062
2102352TWK10KC000068
2102352TPQ10KC000024
2102352TWK10KC000008
2102352TWK10KC000006
2102352TWK10KC000007
2102352TWK10KC001722
2102352TWK10KC001727
2102352TWK10KC001726
2102352TWK10KC001720
2102352TWK10KC001723
2102352TWK10KC001717
2102352TWK10KC001729
2102352TWK10KC001716
2102352TWK10KC001721
2102352TWK10KC001730
2102352TWK10KC001728
2102352TWK10KC001725
2102352TWK10KC001718
2102352TWK10KC001719
2102352TWK10KB000246
2102352TWK10KB000244
2102352TWK10KB000250
2102352TWK10KB000245
2102352TWK10KB000256
2102352TWK10KB000248
2102352TWK10KB000249
2102352TWK10KB000243
2102352TWK10KB000257
2102352TWK10KB000258
2102352TWK10KB000251
2102352TWK10KB000252
2102352TWK10KB000247
2102352TWK10KB000255
2102353CANN0KC000005
2102352TWK10KC001294
2102352TWK10KC001299
2102352TWK10KC001301
2102352TWK10KC001300
2102352TWK10KC001327
2102352TWK10KC001318
2102352TWK10KC001329
2102352TWK10KC001316
2102352TWK10KC001328
2102352TPQ10KC000012
2102352TPQ10KC000011
2102352TPQ10KC000010
2102352TWK10KC000013
2102352TWK10KC000011
2102352TWK10KC000012
2102352TWK10KC001684
2102352TWK10KC001683
2102352TWK10KC001680
2102352TWK10KC001677
2102352TWK10KC001679
2102352TWK10KC001682
2102352TWK10KC001672
2102352TWK10KC001671
2102352TWK10KC001681
2102352TWK10KC001678
2102352TWK10KC001676
2102352TWK10KC001466
2102352TWK10KC001465
2102352TWK10KC001467
2102352TWK10KC001471
2102352TWK10KC001470
2102352TWK10KC001469
2102352TWK10KC001472
2102352TWK10KC001464
2102352TWK10KC001468
2102352TWK10KC000247
2102352TWK10KC000254
2102352TWK10KC000253
2102352TWK10KC000251
2102352TWK10KC000249
2102352TWK10KC000250
2102352TWK10KC000245
2102352TWK10KC000246
2102352TWK10KC000252
2102352TPQ10KC000008
2102352TPQ10KC000007
2102352TPQ10KC000009
2102352TPQ10KC000005
2102352TPQ10KC000006
2102352TPQ10KC000004
2102352TWK10KC000015
2102352TWK10KC000016
2102352TWK10KC000014
2102352TWK10KC001333
2102352TWK10KC001335
2102352TWK10KC001334
2102352TWK10KC000273
2102352TWK10KC000274
2102352TWK10KC000271
2102352TWK10KC000220
2102352TWK10KC000222
2102352TWK10KC000221
2102352TPQ10KC000019
2102352TPQ10KC000018
2102353FTEN0KC000002
2102353FTEN0KC000001
2102353CRMN0KC000001
2102352TWK10KC000701
2102352TWK10KC001531
2102352TWK10KC000452
2102352TWK10KC001747
2102353CLEN0KC000003
2102352TWK10KC001646
2102352TWK10KC001533
2102352TWK10KC000689
2102352TWK10L2000113
2102352TWK10L2000114
2102353JHD10L2000026
2102353JHD10L2000032
2102353JHD10L2000013
2102353JHD10L2000020
2102353JHD10L2000015
2102353JHD10L2000014
2102353JHD10L2000018
2102353JHD10L2000012
2102353JHD10L2000019
2102353JHD10L2000021
2102353JHD10L2000022
2102353JHD10L2000024
2102353JHD10L2000031
2102353JHD10L2000025
2102353JHD10L2000017
2102353JHD10L2000028
2102353JHD10L2000023
2102353JHD10L2000011
2102353JHD10L2000033
2102353JLWN0L2000001
2102353NKFN0L2000007
2102353JLWN0L2000007
2102353JLWN0L2000016
2102353JLWN0L2000014
2102353JLWN0L2000013
2102353NKFN0L2000001
2102353JLWN0L2000020
2102353JLWN0L2000017
2102353JLWN0L2000010
2102353JLWN0L2000018
2102352TWK10L2000118
2102352TWK10L2000119
2102352TWK10L2000120
2102352TWK10L2000111
2102352TWK10L2000107
2102352TWK10L2000112
2102352TWK10L2000110
2102352TWK10L2000109
2102352TWK10L2000108
2102352SPB10L2000003
2102352SPB10L2000004
2102352SPB10L2000006
2102352SPB10L2000011
2102352TWK10L2000115
2102352TWK10L2000117
2102352TWK10L2000116
2102352TWK10L2000122
2102353JHD10L3000004
2102352TPQN0L3000012
2102352TPQN0L3000014
2102352TPQN0L3000013
2102352TWK10L3000158
2102352TWK10L3000154
2102352TWK10L3000157
2102352TWK10L3000155
2102352TWK10L3000159
2102352TWK10L3000156
2102353CCTN0L3000003
2102352TWK10L3000186
2102352TWKN0L3000119
2102352TWKN0L3000120
2102352TWKN0L3000123
2102352TWKN0L3000122
2102352TWKN0L3000121
2102352TWKN0L3000117
2102352TWKN0L4000007
2102353JHDN0L5000024
2102353JHDN0L5000030
2102353JHDN0L5000035
2102352TPQN0L6000006
2102352TPQN0L6000004
2102352TPQN0L6000005
2102352TWMN0L6000021
2102352TWMN0L6000020
2102353JHM10L6000003
2102353XMM10L7000012
2102353XMM10L7000003
2102353XMM10L7000005
2102353XMM10L7000004
2102353XMM10L7000010
2102353XMM10L7000011
2102353XMM10L7000008
2102353XMM10L7000002
2102353XMM10L7000013
2102353XMM10L7000009
2102353XMM10L7000001
2102353XMM10L7000007
2102353XMM10L7000006
2102352TPQ10L8000016
2102352TPQ10L8000017
2102352TPQ10L8000014
2102352TPQ10L8000018
2102352TPQ10L8000015
2102352TWKN0L8000023
2102352TWK10L9000201
2102352TWK10L9000213
2102352TWK10L9000193
2102352TWK10L9000217
2102352TWK10L9000212
2102352TWK10L9000218
2102352TWK10L9000192
2102352TWK10L9000190
2102352TWK10L9000216
2102352TWK10L9000195
2102352TWK10L9000203
2102352TWK10L9000191
2102352TWK10L9000210
2102352TWK10L9000196
2102352TWK10L9000202
2102352TWK10L9000197
2102352TWK10L9000205
2102352TWK10L9000198
2102352TWK10L9000211
2102352TWK10L9000194
2102352TWK10L9000204
2102352TWK10L9000215
2102352TWK10L9000214
2102352TWK10L9000208
2102352TWK10L9000206
2102352TWKN0L9000029
2102352TWKN0L9000278
2102352TWKN0L9000356
2102352TWKN0L9000127
2102352TWK10L9000159
2102352TWKN0L9000121
2102352TWK10L9000091
2102352TWKN0L9000006
2102352TPT10L9000002
2102352TPT10L9000004
2102352TPT10L9000005
2102352TPT10L9000001
2102352TPT10L9000003
2102352ETQN0L9000041
2102352ETQN0L9000036
2102352ETQN0L9000042
2102352ETQN0L9000038
2102352ETQN0L9000040
2102352ETQN0L9000039
2102352TWK10L9000046
2102352TWK10L9000054
2102352TWK10L9000056
2102352ETQ10L9000014
2102352ETQ10L9000013
2102352ETQ10L9000001
2102353WTN10L9000140
2102352KFPN0LA000018
2102352ETQN0LA000004
2102352ETQ10LA000032
2102352ETQN0LA000091
2102352ETQN0LA000081
2102352ETQN0LA000092
2102352TWL10LB000022
2102352TWL10LB000026
2102352TWLN0LA000038
2102352TWL10LB000023
2102352TWKN0LC000465
2102352TWKN0LC000437
2102352TWKN0LC000442
2102352TWKN0LC000429
2102352TWKN0LC000460
2102352TWKN0LC000444
2102352TWKN0LC000457
2102352TWKN0LC000458
2102352TWKN0LC000405
2102353WTNN0LC000021
2102352EULN0LC000070
2102353WTR10LC000003
2102353WTR10LC000019
2102353WTR10LC000015
2102353WTR10LC000012
2102353WTR10LC000009
2102353WTR10LC000014
2102353WTR10LC000011
2102353WTR10LC000002
2102353WTR10LC000008
2102353WTR10LC000001
2102353WTR10LC000005
2102353WTR10LC000017
2102353WTR10LC000016
2102353WTR10LC000013
2102353WTR10LC000010
2102353WTR10LC000007
2102353WTR10LC000018
2102353WTR10LC000004
2102352EULN0LC000052
2102352EULN0LC000077
2102353WTR10LC000006
2102352TWK10LC000053
2102352EULN0LC000011
2102352EULN0LC000014
2102352EULN0LC000009
2102352EULN0LC000016
2102352EULN0LC000019
2102352EULN0LC000008
2102352EULN0LC000017
2102353JHD10LC000005
2102353JHD10LC000003
2102353JHD10LC000001
2102353JHD10LC000004
2102353JHD10LC000007
2102353JHD10LC000002
2102353JHDN0LC000072
2102352EUEN0LC000174
2102352TWKN0LC000078
2102352TWLN0LC000079
2102352TWLN0LC000104
2102352EUE10LC000010
2102352TWLN0LC000178
2102352TWKN0LC000069
2102352TWKN0LC000095
2102352EULN0LC000141
2102352ETQN0M1000001
2102352ETQN0M1000003
2102352ETQN0M1000011
2102352ETQN0M3000011
2102353HCRN0MC100139
2102353GNHN0MC100041
2102353GNHN0MC100039
2102353GMTN0MC100056
2102353GNHN0MC100035
2102353HCRN0MC100137
2102353GNHN0MC100015
2102353HCRN0MC100144
"
Func_SN=$(ipmitool fru | grep -w "Product Serial" |awk -F":" '{print $2}' | sed 's/^ *//g'| sed 's/ *$//g')
echo "$SNLIST" | grep -wq "${Func_SN}"
IsNoNeedCheck=$?
CheckHardwareVersion
exit 0


