#!/bin/sh
set +x

CurInspectNum="231"
LOG_FILE="/var/log/inspect.log"
G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
source $G_INSPECT_MMLPATH/CheckItems
source $G_INSPECT_MMLPATH/CommonFunc.sh
G_REMOTE_TMP_FILE="${G_TMP_INSPECT_PATH}tmpfile"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="${G_TMP_INSPECT_PATH}tmpResult${CurInspectFun}"
>${RESULTFILE}
Result=""

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

#231 检查MON是否在频繁选举
function checkMonHealth()
{
    isPass=0
    filename="MonHealth"

    LOCAL_BACK_IP=`GetLocalIp`

    if [ -z "${LOCAL_BACK_IP}" ]; then
        isPass=1
        echo "[ERR]Error:Can't get backend IP." >>${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        LOG "[$LINENO]Error:Get Local_BACK_IP failed."
        return 1
    fi
    /opt/huawei/snas/script/inspect_mml/ShowInspectMml $LOCAL_BACK_IP 4004 "mon health 0" |sed -e 's/\x1B\[0;[3-4][0-9]m//g' > $G_REMOTE_TMP_FILE$filename 2>&1
    fifoContext=`cat $G_REMOTE_TMP_FILE$filename`
    if [ "$fifoContext" = "" ];then
        isPass=1
        Result="[ERR]Error:Failed to execute command(MmlBatch 4004 'mon health 0')."
        LOG "[$LINENO]Error:Get MonHealth failed.file is empty"
    fi

    dos2unix $G_REMOTE_TMP_FILE$filename

    Ret=`cat $G_REMOTE_TMP_FILE$filename | grep bootstrap | tr -d " "| awk -F: '{printf $2}'`
    Ret1=`cat $G_REMOTE_TMP_FILE$filename | grep "elec      :" | tr -d " " | awk -F: '{printf $2}'`
    LOG "[$LINENO]Ret=[$Ret],Ret1=[$Ret1]."
    # 7.1.1.SPH606热补丁版本的bootstrap值要么是OK，要么直接就是BAD,如果不是这俩值，说明已经打上606补丁咯。暂时只回显这个巡检项结果，不做巡检是否通过检查
    if [ "$Ret" == "OK" -o "$Ret" == "BAD" ]; then
        if [ "$Ret" != "OK" ] || [ "$Ret1" != "OK" ];then
            isPass=1
            if [ "X${Ret}" != "X" ] || [ "X${Ret1}" != "X" ];then
                Result="Bootstrap:$Ret||Elec:$Ret1"
            else
                Result="[ERR]Error:Get MonHealth infomation failed from command(MmlBatch 4004 'mon health 0')."
                LOG "[$LINENO]Error:Get MonHealth failed."
            fi
        else
            Result="Bootstrap:$Ret||Elec:$Ret1"
            LOG "[$LINENO]Result:[$Result]"
        fi
    else
        dsmap=$( cat $G_REMOTE_TMP_FILE$filename | grep -w dsmap | tr -d " "| awk -F: '{printf $2}' )
        mdsmap=$( cat $G_REMOTE_TMP_FILE$filename | grep mdsmap | tr -d " "| awk -F: '{printf $2}' )
        nodemap=$( cat $G_REMOTE_TMP_FILE$filename | grep nodemap | tr -d " "| awk -F: '{printf $2}' )
        camap=$( cat $G_REMOTE_TMP_FILE$filename | grep camap | tr -d " "| awk -F: '{printf $2}' )
        pipmap=$( cat $G_REMOTE_TMP_FILE$filename | grep pipmap | tr -d " "| awk -F: '{printf $2}' )
        repmap=$( cat $G_REMOTE_TMP_FILE$filename | grep repmap | tr -d " "| awk -F: '{printf $2}' )
        ccdbmap=$( cat $G_REMOTE_TMP_FILE$filename | grep ccdbmap | tr -d " "| awk -F: '{printf $2}' )
        dlmmap=$( cat $G_REMOTE_TMP_FILE$filename | grep dlmmap | tr -d " "| awk -F: '{printf $2}' )
        Result="Bootstrap:$Ret||Elec:$Ret1||dsmap:${dsmap}||mdsmap:${mdsmap}||nodemap:${nodemap}||camap:${camap}||pipmap:${pipmap}||repmap:${repmap}||ccdbmap:${ccdbmap}||dlmmap:${dlmmap}"
        vars=(${Ret} ${Ret1} ${dsmap} ${mdsmap} ${nodemap} ${camap} ${pipmap} ${repmap} ${ccdbmap} ${dlmmap})
        # 检查变量是否有值大于50
        for var in "${vars[@]}"; do
            if [ $var -gt 50 ]; then
                isPass=$( check_pass $isPass 4 )
                break
            fi
        done
        if [ ${isPass} -eq 4 ]; then
            Result="[ERR]${Result}"
        fi
        LOG "[$LINENO]Result:[$Result]"
    fi

    echo "$Result" >>${RESULTFILE} 2>&1
    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
    [ -f "$G_REMOTE_TMP_FILE$filename" ] && rm "$G_REMOTE_TMP_FILE$filename"
    return 0
}

checkMonHealth
