#!/bin/sh
set +x

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

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

# 233 检查是否有CORE文件
function checkCoreFile()
{
    local isPass=0
    local spaceFlag=0
    local filename="CoreFilecheck" 
    
    #分别在/corefile/crash和/corefile目录中查找是否有近30天的文件产生
    find /corefile/crash -mtime -30 -type f -print | grep -w "vmcore" | grep .e$ > $G_REMOTE_TMP_FILE$filename 2>&1
    find /corefile -maxdepth 1 -mtime +-1 -mtime -30 ! -type d -print| grep -v "ipmitool" >> $G_REMOTE_TMP_FILE$filename 2>&1
    df -m /corefile | grep "/corefile" | awk '{print "AvailableSpace="$4}' >> $G_REMOTE_TMP_FILE$filename 2>&1

    #检查是否存在core文件等，看文件中有几行，如果多于两行就是有core。文件列表中会包含文件本身，所以至少会有一个
    crashPass=no
    corePass=no
    coreName="--"
    crashfile=$(cat $G_REMOTE_TMP_FILE$filename | grep "/corefile/crash/" |grep -v "find: \`/corefile/crash'" | awk 'END {print NR}')
    LOG "[$LINENO]INFO: crash file is exit,crashfile:$crashfile"

    if [ $crashfile -ge 1 ]
    then
        isPass=1
        crashPass=yes
         echo "[ERR]IFNO:Exist crashfile." >>${RESULTFILE} 2>&1
    fi

    corefile=$(cat $G_REMOTE_TMP_FILE$filename | grep "/corefile/core-" |grep -v "find: \`/corefile"| awk 'END {print NR}')
    LOG "[$LINENO]INFO: core file is exit,corefile:$corefile"

    if [ $corefile -ge 1 ]
    then
        isPass=1
        corePass=yes
        coreName=$(cat $G_REMOTE_TMP_FILE$filename | grep "/corefile/core-" | awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' | sed 's/\/corefile\///g')
        echo "[ERR]IFNO:Exist corefile." >>${RESULTFILE} 2>&1
    fi

    corefileSpace=$(cat $G_REMOTE_TMP_FILE$filename | grep "AvailableSpace" | awk -F '=' '{print $2}')
    if [ -n "$corefileSpace" ];then
        if [ $corefileSpace -lt 20480 ];then
            spaceFlag=1
            LOG "[$LINENO]spaceFlag=$isPass,corefile space less 20480M!"
            echo "[ERR]IFNO:Corefile space is less 20480M! " >>${RESULTFILE} 2>&1
        fi
    else
       isPass=1
       corefileSpace="--"
       LOG "[$LINENO]isPass=$isPass,Get corefile space Failed!"
       echo "[ERR]IFNO:Get corefile space Failed! " >>${RESULTFILE} 2>&1
    fi

    if [ $isPass -eq 0 -a $spaceFlag -eq 1 ];then
        isPass=4
    fi
    
    Result="AvailableSpace(MB):$corefileSpace||crashfile: $crashPass||corefile: $corePass||coreName: $coreName" 
    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
}

checkCoreFile
