#!/bin/sh
set +x

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

function LOG
{
   time=$(date)
   echo [${time}][$$][$CurInspectFun]$@ >> $LOG_FILE
}
#жļϵͳǷ
function JudgeCAFS()
{
    local CAFSDir="/mnt/fs/system"
    local iNode=""

    if [ -d "${CAFSDir}" ]; then
        iNode=$(stat -c %i ${CAFSDir})
        if [ "${iNode}" = "7168" ]; then
            return 0
        else
            return 1
        fi
    else
        return 1
    fi
}

#209. ļϵͳ    ֳ֧ļв    ضĿ¼ִдĿ¼/ļ//ӲӵȲ
function checkFileOperation_Async()
{
    isPass=0

    #ȡڵ洢
    node_service_type=$(egrep '[[]|^'node_service_type'=' /opt/huawei/snas/etc/snas.ini | tr -d '\n' | grep -Po '(?<=[[]'NODE'[]]'node_service_type'=)[0-9]+')

    if [ "${node_service_type}" != "1" ];then
        echo "INFO:Don't involve to inspect." >> ${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        LOG "[$LINENO]node_service_type :${node_service_type}."
        return 0
    fi

    LocalNID=`grep NID /opt/huawei/snas/etc/cm.ini | awk -F"=" '{print $2}'`
    LOG "[$LINENO]LocalNID:$LocalNID"

    #monut
    MountInfo=""

    JudgeCAFS
    if [ $? -ne 0 ]; then
        isPass=1
        echo "[ERR]INFO:Current CAFS is damaged, and the file datacollect_local.sh exits." >>${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        LOG "[$LINENO]Current CAFS is damaged, and the file datacollect_local.sh exits."
        return 1
    fi

    #ִл
    LOG "[$LINENO]start opt : node :$LocalNID"

    for parent_dir in system share;do
        mkdirflag=0
        #ִͬ
        date_name=`date +%s`

        mkdir_name="$date_name@$LocalNID"
        LOG "[$LINENO]:mkdir_name:$mkdir_name"

        mkdir /mnt/fs/$parent_dir/testdir$mkdir_name
        iRet=$?
        if [ $iRet -ne 0 ]; then
            echo "[ERR]INFO:Failed to execute command(mkdir /mnt/fs/$parent_dir/testdir$mkdir_name),Error($iRet)." >>${RESULTFILE} 2>&1
            isPass=1
            mkdirflag=1
        else
            echo "INFO:exec(mkdir /mnt/fs/$parent_dir/testdir$mkdir_name) success." >>${RESULTFILE} 2>&1
            #ִͬtouch
            touch /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID
            iRet=$?
            if [ $iRet -ne 0 ]; then
                echo "[ERR]INFO:Failed to execute command(touch /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID),Error($iRet)." >>${RESULTFILE} 2>&1
                isPass=1
            else
                echo "INFO:exec(touch /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID) success." >>${RESULTFILE} 2>&1

                #ִͬln
                ln /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID /mnt/fs/$parent_dir/testdir$mkdir_name/testfile_link$LocalNID
                iRet=$?
                if [ $iRet -ne 0 ]; then
                    echo "[ERR]INFO:Failed to execute command(ln /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID /mnt/fs/$parent_dir/testdir$mkdir_name/testfile_link$LocalNID),Error($iRet)." >>${RESULTFILE} 2>&1
                    isPass=1
                else
                    echo "INFO:create file hardlink(ln /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID /mnt/fs/$parent_dir/testdir$mkdir_name/testfile_link$LocalNID) success." >>${RESULTFILE} 2>&1
                fi

                #ִ
                ln -s /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID /mnt/fs/$parent_dir/testdir$mkdir_name/testfile_softlink$LocalNID
                iRet=$?
                if [ $iRet -ne 0 ]; then
                    echo "[ERR]INFO:Failed to execute command(ln -s /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID /mnt/fs/$parent_dir/testdir$mkdir_name/testfile_softlink$LocalNID),Error($iRet)." >>${RESULTFILE} 2>&1
                    isPass=1
                else
                    echo "INFO:create file softlink(ln -s /mnt/fs/$parent_dir/testdir$mkdir_name/testfile$LocalNID /mnt/fs/$parent_dir/testdir$mkdir_name/testfile_softlink$LocalNID) success." >>${RESULTFILE} 2>&1
                fi
            fi
        fi

        #ִͬɾ
        if [ "$mkdirflag" != "1" ]; then
            rm -rf /mnt/fs/$parent_dir/testdir$mkdir_name
            iRet=$?
            if [ $iRet -ne 0 ]; then
                echo "[ERR]INFO:Failed to execute command(rm -rf /mnt/fs/$parent_dir/testdir$mkdir_name),Error($iRet)." >>${RESULTFILE} 2>&1
                isPass=1
            else
                echo "INFO:exec(rm -rf /mnt/fs/$parent_dir/testdir$mkdir_name) success." >>${RESULTFILE} 2>&1
            fi
        fi
    done
    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
}

checkFileOperation_Async
