#!/bin/bash
set +x

source /opt/huawei/snas/script/inspect_mml/CommonFunc.sh
#ڵʱļ
SWITCH_TOPO_FILE="/tmp/tmpfileswitchTopo"
#ػظڵʱļ
SWITCH_TOPO_FILE1="/tmp/tmpfileswitchTopo1"
SWITCH_TOPO_TMP_FILE="/tmp/tmpfilecheckswitchinfo"
LOGFILE="/var/log/inspect.log"
MASTERSWITCHFILE="/opt/huawei/snas/etc/switchTopo.ini"
Repeat=(1 2 3)

function log_file()
{
    echo [`date`][$$]$@ >> $LOGFILE
}

function remotedownload
{
    local remote_ip=$1
    local local_file=$2
    local remote_file=$3
    local iRet=0

    if [ -f "$MASTERSWITCHFILE" ];then
        dos2unix $MASTERSWITCHFILE > /dev/null 2>&1
        cp $MASTERSWITCHFILE $SWITCH_TOPO_FILE
        if [ $? -ne 0 ];then
           log_file "[$FUNCNAME][$LINENO]Can't get the switch info"
           return 1
        fi
    else
        sleep 5
    fi
    for time in ${Repeat[*]}; do
        /opt/huawei/deploy/script/localexec.py download $remote_ip $local_file $remote_file
        iRet=$?
        log_file "[$FUNCNAME] download ($remote_file) from ($remote_ip) to ($local_file) iRet:($iRet) time:$time"
        if [ $iRet -ne 0 ]; then
            sleep 5
        else
            break
        fi
    done
    return $iRet
}

function CheckNetLine()
{
    local remote_ip=""
    local masterIP=""
    local ping_result=0
    masterIP=$(/usr/local/bin/MmlBatch 4016 "cm master" | grep ^BackIP|awk -F: '{print $2}'|tr -d ' ' | sed -e 's/\x1B\[0;[3-4][0-9]m//g' -e 's/\x0D//g' -e 's/\x00//g' 2>&1)
    for item in $masterIP;do
        ping_result=`ping -q -c 2 $item  | grep received | awk '{print $4}'`
        if [ "$ping_result" == "0" ];then
            log_file "[$FUNCNAME] masterIP=$item is not OK"
            continue
        else
            remote_ip=$item
            break
        fi   
    done

    remotedownload $remote_ip $SWITCH_TOPO_FILE1 $SWITCH_TOPO_FILE
    resultInfo=`cat $SWITCH_TOPO_FILE1`
    log_file "[$FUNCNAME][$LINENO]SWITCH_TOPO_FILE=$SWITCH_TOPO_FILE"
    if [ "$resultInfo" = "" ]; then
        log_file "[$FUNCNAME][$LINENO]switch topo empty"
        return 1
    fi
    #ȡڵ
    NodeName=$(cat /opt/huawei/snas/etc/snas.ini |grep Hostname |awk -F= '{print $2}')
    resultNodeInfo=`cat $SWITCH_TOPO_FILE1 |grep -w $NodeName`

    Nodeinfo=$(echo $resultNodeInfo| awk -F'\\|\\|' '{print $1}')
    echo -n $Nodeinfo > $SWITCH_TOPO_TMP_FILE

    MY_OLD_IFS="$IFS"
    IFS="|"
    resultInfo=($resultNodeInfo)
    IFS="$MY_OLD_IFS"

    for oneRec in ${resultInfo[@]}
    do
        portSwitch=$(echo $oneRec | grep "netPort.*switch")
        if [ "$portSwitch" = "" ]; then
            continue
        fi
        netPort=$(echo $(echo $oneRec | awk -F ',' '{printf $1}') | awk -F ':' '{printf $2}')

        #жǷǺip,øڵţͨţȡsubnetwork_idšsubnetwork_id=1ʾ
        ID=$(cat /opt/huawei/snas/etc/snas.ini | grep -w "$netPort"|awk -F "_" '{print $3}'|awk -F "=" '{print $1}'|tr -d ' ')
        subnetwork_id=$(cat /opt/huawei/snas/etc/snas.ini | grep -w "subnetwork_id_$ID"|awk -F "=" '{print $2}'|tr -d ' ')
        if [ "$subnetwork_id" != "1" ]; then
            continue
        fi
        NodeNetPortIp=$(cat /opt/huawei/snas/etc/snas.ini | grep -w "ipaddr_$ID"|awk -F "=" '{print $2}')
        switchName=$(echo $(echo $oneRec | awk -F ',' '{printf $3}') | awk -F ':' '{printf $2}')

        log_file "[$FUNCNAME][$LINENO] netPort:$netPort,ip:$NodeNetPortIp,switchName:$switchName"
        echo -n " netPort:$netPort,ip:$NodeNetPortIp,switchName:$switchName" >> $SWITCH_TOPO_TMP_FILE

    done
}
CheckNetLine $1
[ -f "${SWITCH_TOPO_FILE1}" ] && rm -f "${SWITCH_TOPO_FILE1}"
