Shell腳本案例(二).檢查summer服務mount點狀態是否OK


我們要檢測與summer服務相關的的mount點是否正常,首先需要知道與summer服務相關的mount點都有哪些?在summer服務的配置文件xxxconf.xml中配置有mount點的配置信息。所以第一步,我們要從配置文件中找出<MountPointPath>標籤中的內容,即mount路徑,並將mount路徑暫存到conf_mount.list文件中。
summer服務需要的mount點可能不止一個,所以conf_mount.list中可能存在多個mount路徑,要檢查每一個mount點是否正常,就要對其進行循環遍歷。
不同的文件類型,掛載在不同的路徑下,所以需要先判斷文件類型。
mount命令可以查詢出所有的mount點,通過mount |grep "$mount_info" |wc -l命令查看是否有指定路徑的mount點的數量。
如果數量不爲0,表示有指定的mount點,在此基礎上測試這個mount是否正常,可以通過touch一個文件的方式,測試是否正常




file_type_check()
{
    if [ -f "/usr/bin/mkmfsadm" ];then
        tmp_file_type="mkm"
    elif [ -f "/opt/SmartData/bin/smio_info" ];then
        tmp_file_type="smartdata"
    else
        tmp_file_type="unknow_filetype"
    fi
}


monitor_mount_state()
{
    num=0    


    iteration_result1=""

    tmp_file_type=""   
    file_type_check


    cat $summerconf|grep "<MountPointPath>" |awk -F'<|>' '{print $3}' > conf_mount.list
    for line in $(cat conf_mount.list)  
    do
        if [ "$tmp_file_type" = "mkm" ];then
            mount_info="/opt/mkmfs_fuse/$line"
            tmp_mount_count=`mount |grep "$mount_info" |wc -l`
        else
            mount_info="/home/summer/data/$line"
            tmp_mount_count=`mount |grep "$mount_info " |wc -l`
        fi
           
        if [ $tmp_mount_count -ne 0 ];then
            file_date=`date +%Y%m%d%H%M%S`
            touch /home/summer/data/$line/mounttest_$file_date 2>/dev/null;real_rm /home/summer/data/$line/mounttest_$file_date 2>/dev/null
            if [ $? = 0 ];then
                continue
            else
                if [ "X$iteration_result1" == "X" ];then
                    iteration_result1=$line
                else
                    iteration_result1=$iteration_result1" "$line
                fi
                num=`expr $num + 1`
                g_err_flag=1
            fi
        else
            if [ "X$iteration_result1" == "X" ];then
                iteration_result1=$line
            else
                iteration_result1=$iteration_result1" "$line
            fi
            num=`expr $num + 1`
            g_err_flag=1
        fi
    done


    if [ $num -eq 0 ];then
    echo "check_mount_status is OK"
    else
       
        echo "check_mount_status is WARN"
    fi
    rm -rf conf_mount.list
    return 0 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章