#!/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

    bootstrap=$( cat $G_REMOTE_TMP_FILE$filename | grep bootstrap | tr -d " "| awk -F: '{printf $2}')
    elec=$( cat $G_REMOTE_TMP_FILE$filename | grep "elec      :" | tr -d " " | awk -F: '{printf $2}')
    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}' )
    LOG "[$LINENO]bootstrap=[$bootstrap],elec=[$elec]."
    if [ -z $bootstrap ] || [ -z $elec ];then
        isPass=1
        Result="[ERR]Error:Get MonHealth infomation failed from command(MmlBatch 4004 'mon health 0')."
        LOG "[$LINENO]Error:Get MonHealth failed."
    fi
    Result="Bootstrap:$bootstrap||Elec:$elec||dsmap:${dsmap}||mdsmap:${mdsmap}||nodemap:${nodemap}||camap:${camap}||pipmap:${pipmap}||repmap:${repmap}||ccdbmap:${ccdbmap}||dlmmap:${dlmmap}"
    vars=(${bootstrap} ${elec} ${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]"
    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
