#!/bin/bash

# 检测eth0_status.txt文件是否存在，如果存在就删除
if [ -f "../log/eth0_status.txt" ]; then
    echo "Delete eth0_status.txt."
    rm -f "../log/eth0_status.txt"
fi

# wifi_status.txt文件是否存在，如果存在就删除
if [ -f "../log/wifi_status.txt" ]; then
    echo "Delete wifi_status.txt."
    rm -f "../log/wifi_status.txt"
fi

# 4g_status.txt文件是否存在，如果存在就删除
if [ -f "../log/4g_status.txt" ]; then
    echo "Delete 4g_status.txt."
    rm -f "../log/4g_status.txt"
fi

# 读取ini文件中的值
CheckNetWorkOnlineAddr1=$(awk -F "=" '$1 == "CheckNetWorkOnlineAddr1" {print $2}' ../setting/sys_param_DC.ini)
CheckNetWorkOnlineAddr2=$(awk -F "=" '$1 == "CheckNetWorkOnlineAddr2" {print $2}' ../setting/sys_param_DC.ini)
CheckNetWorkOnlineAddr3=$(awk -F "=" '$1 == "CheckNetWorkOnlineAddr3" {print $2}' ../setting/sys_param_DC.ini)
use_eth0=$(awk -F "=" '/use_eth0/{print $2}' ../setting/sys_param_DC.ini)
use_wifi=$(awk -F "=" '/use_wifi/{print $2}' ../setting/sys_param_DC.ini)
use_4g=$(awk -F "=" '/use_4g/{print $2}' ../setting/sys_param_DC.ini)

use_priority_4g=$(awk -F "=" '/Priority_4g/{print $2}' ../setting/sys_param_DC.ini)

echo "CheckNetWorkOnlineAddr1: $CheckNetWorkOnlineAddr1"
echo "CheckNetWorkOnlineAddr2: $CheckNetWorkOnlineAddr2"
echo "CheckNetWorkOnlineAddr3: $CheckNetWorkOnlineAddr3"
echo "use_eth0: $use_eth0"
echo "use_wifi: $use_wifi"
echo "use_4g: $use_4g"

use_netcard_cnt=$[ $use_eth0+$use_wifi+$use_4g ]
echo "use_netcard_cnt: $use_netcard_cnt"
echo "use_priority_4g: $use_priority_4g"
# 判断没有网卡或者只有一个网卡被启用
if ([ $use_eth0 -eq 1 ] && [ $use_wifi -eq 0 ] && [ $use_4g -eq 0 ] )||( [ $use_eth0 -eq 0 ] && [ $use_wifi -eq 1 ] && [ $use_4g -eq 0 ]) || ([ $use_eth0 -eq 0 ] && [ $use_wifi -eq 0 ] && [ $use_4g -eq 1 ]); then
    echo "Only one network card is enabled. Exiting script."
    exit 1
elif [ $use_eth0 -eq 0 ] && [ $use_wifi -eq 0 ] && [ $use_4g -eq 0 ]; then
    echo "No network card is enabled. Exiting script."
    exit 1
else
    echo "Multiple network cards are enabled."
fi

# 初始化网卡标识变量
eth0_status="failed"
# echo "eth0_status: $eth0_status"

wifi_status="failed"
# echo "wifi_status: $wifi_status"

f4g_status="failed"

#躲过前面网卡不稳定的状态 ，可能路由表或者域名解析的问题,以太网延时5s开始检测，wifi延时10s开始检测
CNT_ETH=1
CNT_WIFI=0
CNT_4G=40
while true; do
    #再次获取4g的优先级配置信息
    use_priority_4g=$(awk -F "=" '/Priority_4g/{print $2}' ../setting/sys_param_DC.ini)
    # 测试eth0网卡
    if [ $use_eth0 -eq 1 ]; then
    if [ $CNT_ETH -eq 2 ]; then
        eth0_status="failed"
        if ethtool eth0 | grep -q "Link detected: yes"; then
            if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr1 -I eth0 >/dev/null 2>&1; then
                eth0_status="success"
	#sleep 2
           else
                if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr2 -I eth0 >/dev/null 2>&1; then
                    eth0_status="success"
                    #sleep 2
	else
                    if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr3 -I eth0 >/dev/null 2>&1; then
                        eth0_status="success"
                    fi
                fi
            fi
        fi
        echo "eth0_status: $eth0_status" >../log/eth0_status.txt
       # echo "eth0_status: $eth0_status"
    fi
    CNT_ETH=$[ $CNT_ETH+1 ]
    if  [ $CNT_ETH -ge 6 ]; then
      CNT_ETH=0
    fi
    fi

    # 测试wlan0网卡
    if [ $use_wifi -eq 1 ]; then
    if [ $CNT_WIFI -eq 2 ]; then
        wifi_status="failed"
        if ethtool wlan0 | grep -q "Link detected: yes"; then
            if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr1 -I wlan0 >/dev/null 2>&1; then
                wifi_status="success"
                #sleep 2
            else
                if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr2 -I wlan0 >/dev/null 2>&1; then
                    wifi_status="success"
                    #sleep 2
	else
                    if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr3 -I wlan0 >/dev/null 2>&1; then
                        wifi_status="success"
                    fi
                fi
            fi
        fi
        echo "wifi_status: $wifi_status" >../log/wifi_status.txt
       #echo  "wifi_status: $wifi_status" 
    fi
    CNT_WIFI=$[ $CNT_WIFI+1 ]
    if  [ $CNT_WIFI -ge 6 ]; then
      CNT_WIFI=0
    fi
    fi
    
   
    # 测试4G网卡  - 增加检测条件，如果是排序为3不检测、如果只有2个网卡并且排序是2不检测
    if [ $use_4g -eq 1 ]&& ([ $use_priority_4g -eq 1 ]||([ $use_priority_4g -eq 2 ]&&[ $use_netcard_cnt -eq 3 ])); then
     #  echo  "waiting for check 4g  $CNT_4G ..." 
    if [ $CNT_4G -eq 2 ]; then
        f4g_status="failed"
        if ethtool wwan0 | grep -q "Link detected: yes"; then
            if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr1 -I wwan0 >/dev/null 2>&1; then
                f4g_status="success"
                #sleep 2
            else
                if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr2 -I wwan0 >/dev/null 2>&1; then
                    f4g_status="success"
                    #sleep 2
	else
                    if timeout -s 9 30s ping -c 1 -s 30 $CheckNetWorkOnlineAddr3 -I wwan0 >/dev/null 2>&1; then
                        f4g_status="success"
                    fi
                fi
            fi
        fi
        echo "4g_status: $f4g_status" >../log/4g_status.txt
      # echo  "4g_status: $f4g_status" 
    fi
    CNT_4G=$[ $CNT_4G+1 ]
    if  [ $CNT_4G -ge 60 ]; then 
       CNT_4G=0
    fi
    else
      CNT_4G=0
    fi

    # 等待30秒后再次执行测试 sleep 30
    sleep 5
done
