怎么做pas检测EC20 AT指令

新闻资讯2026-04-21 11:20:59
$ cat etc/ltedial 
#!/bin/sh

#LOGG_STYLE="tty"
#LOGG_STYLE="file"
LOGG_STYLE="logger"
#LOGG_STYLE="tty+logger"
# RemoteLog=`uci get system.@system[0].remote_log_ip`
# if [ "$RemoteLog" != "0.0.0.0" ];then
	# LOGG_STYLE="file+logger"
# fi


logg()


logg_notice()



_ckIPaddr() 
{
	ckStep1=`echo $1 | awk -F"." '{print NF}'`
	if [ $ckStep1 -eq 4 ] || [ $ckStep1 -eq 6 ]
	then
		ckStep2=`echo $1 | awk -F"." ' END 
			'| wc -l`
		if [ $ckStep2 -eq $ckStep1 ]
		then
			echo 0
		else
			echo 1
		fi
	else
		echo 1
	fi
}


CURTIME=`date +'%y-%m-%d %H:%M:%S'`
logg "ltedial -- $CURTIME"

#4G进程守护
# usr_lte_info=`ps | grep /bin/usr_lte | grep -v grep`
# usr_backuplte_info=`ps | grep /bin/usr_backuplte | grep -v grep`

# if [ "$usr_lte_info" == "" ];then
	# logg "ltedial -- usr_lte restar" > /dev/ttyS1
	# /etc/init.d/usr_lte restart > /dev/null &
# fi

# if [[ "$usr_backuplte_info" == "" -a "$Sim_Work_Mode" != "ColdMode" ]];then
	# logg "ltedial -- sr_backuplte restart" > /dev/ttyS1
	# /etc/init.d/usr_backuplte restart > /dev/null &
# fi

metric_4g1=$(uci get network.wan_4g1.metric)
metric_4g2=$(uci get network.wan_4g2.metric)

[ "$metric_4g1" != "" ] || ( metric_4g1=40 )
[ "$metric_4g2" != "" ] || ( metric_4g2=41 )

#解决ppoe网卡不能切网问题,不能写死eth0.2,而是需要获取wan_wired的网卡的名字
wan_phy=`ifstatus wan_wired | grep l3_device | awk -F '"' '{print $4}'`

#wan_pro默认wanfirst
wan_pro=$(uci get apnset.@apnset[0].wanprio)
if [ "$wan_pro" == "none" ]
then 
	logg no wan prio, exiting~~~~
	exit 0;
fi

#*********add SIM Work Mode Configuration************
Sim_Work_Mode=$(uci get apnset.@apnset[0].Work_Mode)
logg "*****Word Mode*******$Sim_Work_Mode*************"

if [ "$Sim_Work_Mode" == "LoadBalancing" ]
then 
	logg "****Word Mode***$Sim_Work_Mode***exit******"
	exit 0;
fi

#获取wan口网关地址,如果没有此网卡,值为空
wan1gw=`ifstatus wan_wired | grep nexthop | awk -F '"' '{print $4}'| tail -n 1`
wan2gw_Sim1=`ifstatus wan_4g1 | grep nexthop | awk -F '"' '{print $4}'| tail -n 1`
wan2gw_Sim2=`ifstatus wan_4g2 | grep nexthop | awk -F '"' '{print $4}'| tail -n 1`
#4G网卡的名字
dev4g_Sim1=`uci get network.wan_4g1.ifname`
dev4g_Sim2=`uci get network.wan_4g2.ifname`
if [ "$dev4g_Sim1" == "ppp0" ];then
	dev4g_Sim1 = "3g-wan_4g1"
fi

if [ ! $wan2gw_Sim1 ]; then
	wan2gw_Sim1=`ifconfig ppp0 | grep P-t-P | awk -F : '{print $3}' | awk '{print $1}'`
	dev4g_Sim1 = "wan_4g1"
fi

if [ ! $wan2gw_Sim1 ]; then
	wan2gw_Sim1=`ifconfig ppp0 | grep P-t-P | awk -F : '{print $3}' | awk '{print $1}'`
	dev4g_Sim1 = "wan_4g1"
fi

if [ ! $wan2gw_Sim1 ]; then
	wan2gw_Sim1=`ifstatus wan_ct | grep nexthop | awk -F '"' '{print $4}'`
	dev4g_Sim1 = "3g-wan_ct1"
fi

wan1gwtemp=$wan1gw
wan2gwtemp_Sim1=$wan2gw_Sim1
wan2gwtemp_Sim2=$wan2gw_Sim2
#获取默认路由下一跳地址
defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`

#if default route is wan1_gw && wan1_gw is accessable

refermode=$(uci get apnset.@apnset[0].refermode)
if [ "$refermode" == "custom" ]
then
	referip=$(uci get apnset.@apnset[0].referip)
	if [ "$referip" != "" ];then
		#支持域名
		for ip in $(resolveip -t 5 "$referip"); do
			referip=$ip
			break;
		done
	fi
	
	CK_IPADDR=`_ckIPaddr $referip`
	if [[ $CK_IPADDR -eq 1 ]];then
		VER=`cat /etc/ver | grep EN`
		if [ "$VER" == "" ] ;then
			referip=114.114.114.114 
		else
			referip=8.8.8.8
		fi
	fi
	
	wan2gw_Sim1=$referip;
	wan1gw=$referip;
	referip_Sim2=$(uci get apnset.@apnset[0].referip_Sim2)
	if [ "$referip_Sim2" != "" ];then
		#支持域名
		for ip in $(resolveip -t 5 "$referip_Sim2"); do
			referip_Sim2=$ip
			break;
		done
	fi
	
	CK_IPADDR=`_ckIPaddr $referip_Sim2`
	if [[ $CK_IPADDR -eq 1 ]];then
		VER=`cat /etc/ver | grep EN`
		if [ "$VER" == "" ] ;then
			referip_Sim2=114.114.114.114 
		else
			referip_Sim2=8.8.8.8
		fi
	fi
	wan2gw_Sim2=$referip_Sim2;
fi

#打印ping参考地址,网关地址
logg wan1gw: $wan1gw 
logg wan2gw_Sim1: $wan2gw_Sim1
logg wan2gw_Sim2: $wan2gw_Sim2  
logg devwan: $wan_phy
logg dev4g_Sim1: $dev4g_Sim1
logg dev4g_Sim2: $dev4g_Sim2
logg wan1gwtemp: $wan1gwtemp 
logg wan2gwtemp_Sim1: $wan2gwtemp_Sim1
logg wan2gwtemp_Sim2: $wan2gwtemp_Sim2

Public_check_ip1=114.114.114.114
Public_check_ip2=119.29.29.29
Public_check_ip3=180.76.76.76
Public_check_ip4=8.8.8.8
Public_check_ip5=8.8.4.4

if [ "$wan_pro" == "wanfirst" ]
then 
	logg "==========wanfirst============="
	#参考地址存在,网关存在
	if [[ "$wan1gw" != "" -a "$wan1gwtemp" != "" ]]
	then 
		if [[ "$wan2gwtemp_Sim1" != "" -o "$wan2gwtemp_Sim2" != ""  ]]
		then
			#开始ping测试
			for ip in $wan1gw $Public_check_ip1 $Public_check_ip2 $Public_check_ip3 $Public_check_ip4 $Public_check_ip5
			do
				route add -host $ip gw $wan1gwtemp dev $wan_phy
				wan1gw_ok=`ping $ip -w 2 -I $wan_phy | grep "bytes from"`
				logg ping wan1: $wan1gw_ok
				if [ -z "$wan1gw_ok" ]
				then 
					wan1gw_ok=""
					route del -host $ip gw $wan1gwtemp dev $wan_phy
					logg_notice "==========wan1 ping $ip fail_============="
					if [ $ip == $Public_check_ip5 ];then
						#确认网络不通,切换到4G或其他网络
						logg "$wan_phy can not used , continue ...  "
					fi
				else
					logg "fixing route to wan1 ... " 
					defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
					defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
					[ "$defaultroute" == "$wan1gwtemp" -a "$defaultphy" == "$wan_phy" ] || ( route del default dev $wan_phy; route add default gw $wan1gwtemp metric 0 dev $wan_phy; logg_notice "wan1 tobe defroute" )
					route del -host $ip gw $wan1gwtemp dev $wan_phy
					logg "fixing ...  OK" 
					#杀掉usr_backuplte
					if [ "$Sim_Work_Mode" == "ColdMode" ]
					then
						logg "***********Cold Mode****close SIM2**************"
						#gpio s 25 1
						gpio s 71 0;gpio s 70 0
						gpio s 66 0;gpio s 67 0;gpio s 68 0;gpio s 69 0;
						env -i /sbin/ifdown wan_4g2 >/dev/null 2>/dev/null
						ps | grep usr_backuplte | grep -v grep | awk '{print $1}' | xargs kill -s 9
						ps | grep quectel-CM  | grep  sim2 | awk '{print $1}' | xargs kill -s 9
					fi
				
					exit 0;
				fi
			done
		else
			#无4G,还是用有线,退出
			logg "no 4G-1,4G-2 , change wired ... "
			defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
			logg "now defaultroute = $defaultroute ... "
			[ "$defaultroute" == "$wan1gwtemp" ] || ( route del default; route add default gw $wan1gwtemp; logg_notice "wan1 tobe defroute" )
			logg "fixing ...  OK" 
			exit 0;
		fi
	fi

	#无有线,或者有线不通
	if [[ "$wan2gw_Sim1" != "" -a "$wan2gwtemp_Sim1" != "" ]]
	then 
		#开始ping测试
		for ip in $wan2gw_Sim1 $Public_check_ip1 $Public_check_ip2 $Public_check_ip3 $Public_check_ip4 $Public_check_ip5
		do
			route add -host $ip gw $wan2gwtemp_Sim1 dev $dev4g_Sim1
			wan2gw_ok_Sim1=`ping $ip -w 2 -I $dev4g_Sim1 | grep "bytes from"`
			logg ping wan2_Sim1: $wan2gw_ok_Sim1
			if [[ "$wan2gw_ok_Sim1" == "" ]]
			then 
				#ping失败
				wan2gw_ok_Sim1=""
				route del -host $ip gw $wan2gwtemp_Sim1 dev $dev4g_Sim1
				logg_notice "==========4G-1 ping $ip fail_============="
				if [ $ip == $Public_check_ip5 ];then
					#确认网络不通,切换到4G或其他网络
					logg "$wan_phy and Sim1 can not used , continue ...  "
				fi
			else
			
				defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
				defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
				logg "fixing route to wan2_Sim1 ... " 
				[ "$defaultroute" == "$wan2gwtemp_Sim1" -a "$defaultphy" == "$dev4g_Sim1" ] || ( route del default dev $wan_phy; 
					defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
					defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
					[ "$defaultroute" == "$wan2gwtemp_Sim1" -a "$defaultphy" == "$dev4g_Sim1" ] || ( ip route add default via $wan2gwtemp_Sim1 dev $dev4g_Sim1 metric $metric_4g1 ; logg_notice "wan2_Sim1 tobe defroute" )
				)
				route del -host $ip gw $wan2gwtemp_Sim1 dev $dev4g_Sim1
				logg "fixing ...  OK" 
				
				if [ "$Sim_Work_Mode" == "ColdMode" ]
				then
					logg "***********Cold Mode****close SIM2**************"
					#gpio s 25 1
					gpio s 71 0;gpio s 70 0
					gpio s 66 0;gpio s 67 0;gpio s 68 0;gpio s 69 0;
					env -i /sbin/ifdown wan_4g2 >/dev/null 2>/dev/null
					ps | grep usr_backuplte | grep -v grep | awk '{print $1}' | xargs kill -s 9
					ps | grep quectel-CM  | grep  sim2 | awk '{print $1}' | xargs kill -s 9
				fi
				
				exit 0;
			fi
		done
	fi

	#无有线或者有线不通,并且SIM1也不通	
	#不管现在是热模式还是冷模式,先判断sim2网卡是否可用,如果不可用且在冷模式下,启动usr_backuplte
	if [[ "$wan2gw_Sim2" != "" -a "$wan2gwtemp_Sim2" != "" ]]
	then 
		#开始ping测试
		for ip in $wan2gw_Sim2 $Public_check_ip1 $Public_check_ip2 $Public_check_ip3 $Public_check_ip4 $Public_check_ip5
		do
			route add -host $ip gw $wan2gwtemp_Sim2 dev $dev4g_Sim2
			wan2gw_ok_Sim2=`ping $ip -w 2 -I $dev4g_Sim2 | grep "bytes from"`
			logg ping wan2_Sim2: $wan2gw_ok_Sim2
			if [[ "$wan2gw_ok_Sim2" == "" ]]
			then 
				#ping失败
				wan2gw_ok_Sim2=""
				route del -host $ip gw $wan2gwtemp_Sim2 dev $dev4g_Sim2
				logg_notice "==========4G-2 ping $ip fail_============="
				if [ $ip == $Public_check_ip5 ];then
					#确认网络不通
					#本次切网不做任何改动
					logg "NOT changes"
				fi
			else
				defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
				defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
				logg "fixing route to wan2_Sim2 ... " 
				[ "$defaultroute" == "$wan2gwtemp_Sim2" -a "$defaultphy" == "$dev4g_Sim2" ] || ( route del default dev $wan_phy; route del default dev $dev4g_Sim1;
					defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
					defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
					[ "$defaultroute" == "$wan2gwtemp_Sim2" -a "$defaultphy" == "$dev4g_Sim2" ] || ( ip route add default via $wan2gwtemp_Sim2 dev $dev4g_Sim2 metric $metric_4g2 ; logg_notice "wan2_Sim2 tobe defroute" )
				)
				route del -host $ip gw $wan2gwtemp_Sim2 dev $dev4g_Sim2
				logg "fixing ...  OK" 
				exit 0;
			fi
		done
	else
		if [ "$Sim_Work_Mode" == "ColdMode" ]
		then
			#由于ltedial执行时间较短,usr_backuplte不可能很快能拨号成功
			eixt=`ps | grep usr_backuplte | grep -v grep` 
			if [ "$eixt" == "" ];then
				logg "$wan_phy and Sim1 can not used , sim2 not start, usr_lte_backup**start!!!!"
				/bin/usr_backuplte &
			fi
		fi
	fi

fi


if [ "$wan_pro" == "4gfirst"  ]
then 
	logg "==========4gfirst============="
	if [[ "$wan2gw_Sim1" != "" -a "$wan2gwtemp_Sim1" != "" ]]
	then 
		#开始ping测试
		for ip in $wan2gw_Sim1 $Public_check_ip1 $Public_check_ip2 $Public_check_ip3 $Public_check_ip4 $Public_check_ip5
		do
			route add -host $ip gw $wan2gwtemp_Sim1 dev $dev4g_Sim1
			wan2gw_ok_Sim1=`ping $ip -w 2 -I $dev4g_Sim1 | grep "bytes from"`
			logg ping wan2_Sim1: $wan2gw_ok_Sim1
			if [[ "$wan2gw_ok_Sim1" == "" ]]
			then 
				#ping失败
				wan2gw_ok_Sim1=""
				route del -host $ip gw $wan2gwtemp_Sim1 dev $dev4g_Sim1
				logg_notice "==========4G-1 ping $ip fail_============="
				if [ $ip == $Public_check_ip5 ];then
					#确认4g1网络不通,切换到4G2或其他网络
					logg "Sim1 can not used , continue ...  "
				fi
			else
				if [ "$Sim_Work_Mode" == "ColdMode" ]
				then
					logg "***********Cold Mode****close SIM2**************"
					#gpio s 25 1
					gpio s 71 0;gpio s 70 0
					gpio s 66 0;gpio s 67 0;gpio s 68 0;gpio s 69 0;
					env -i /sbin/ifdown wan_4g2 >/dev/null 2>/dev/null
					ps | grep /bin/usr_backuplte | grep -v grep | awk '{print $1}' | xargs kill -s 9
					ps | grep quectel-CM  | grep  sim2 | awk '{print $1}' | xargs kill -s 9
				fi
				
				defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
				defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
				logg "fixing route to wan2_Sim1 ... " 
				[ "$defaultroute" == "$wan2gwtemp_Sim1" -a "$defaultphy" == "$dev4g_Sim1" ] || ( ip route add default via $wan2gwtemp_Sim1 dev $dev4g_Sim1 metric $metric_4g1 ; logg_notice "wan2_Sim1 tobe defroute" )
				route del -host $ip gw $wan2gwtemp_Sim1 dev $dev4g_Sim1
				logg "fixing ...  OK" 
				exit 0;
			fi
		done
	fi

	#无SIM1,或者SIM1不通,
	#不管现在是热模式还是冷模式,先判断sim2网卡是否可用,如果不可用且在冷模式下,启动usr_backuplte
	if [[ "$wan2gw_Sim2" != "" -a "$wan2gwtemp_Sim2" != "" ]]
	then 
		#开始ping测试
		for ip in $wan2gw_Sim2 $Public_check_ip1 $Public_check_ip2 $Public_check_ip3 $Public_check_ip4 $Public_check_ip5
		do
			route add -host $ip gw $wan2gwtemp_Sim2 dev $dev4g_Sim2
			wan2gw_ok_Sim2=`ping $ip -w 2 -I $dev4g_Sim2 | grep "bytes from"`
			logg ping wan2_Sim2: $wan2gw_ok_Sim2
			if [[ "$wan2gw_ok_Sim2" == "" ]]
			then 
				#ping失败
				wan2gw_ok_Sim2=""
				route del -host $ip gw $wan2gwtemp_Sim2 dev $dev4g_Sim2
				logg_notice "==========4G-2 ping $ip fail_============="
				if [ $ip == $Public_check_ip5 ];then
					#确认网络不通
					logg "Sim1 and Sim1 can not used , continue ...  "
				fi
			else
				defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
				defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
				logg "fixing route to wan2_Sim2 ... " 
				[ "$defaultroute" == "$wan2gwtemp_Sim2" -a "$defaultphy" == "$dev4g_Sim2" ] || (  route del default dev $dev4g_Sim1;
					defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
					defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
					[ "$defaultroute" == "$wan2gwtemp_Sim2" -a "$defaultphy" == "$dev4g_Sim2" ] || ( ip route add default via $wan2gwtemp_Sim2 dev $dev4g_Sim2 metric $metric_4g2; logg_notice "wan2_Sim2 tobe defroute" )
				)
				route del -host $ip gw $wan2gwtemp_Sim2 dev $dev4g_Sim2
				logg "fixing ...  OK" 
				exit 0;
			fi
		done
	else
		if [ "$Sim_Work_Mode" == "ColdMode" ]
		then
			#由于ltedial执行时间较短,usr_backuplte不可能很快能拨号成功
			eixt=`ps | grep usr_backuplte | grep -v grep` 
			if [ "$eixt" == "" ];then
				logg "$wan_phy and Sim1 can not used , sim2 not start, usr_lte_backup**start!!!!"
				/bin/usr_backuplte &
			fi
		fi
	fi
	
	#无4G1,4g2 或者不通
	if [[ "$wan1gw" != "" -a "$wan1gwtemp" != "" ]]
	then 
		#开始ping测试
		for ip in $wan1gw $Public_check_ip1 $Public_check_ip2 $Public_check_ip3 $Public_check_ip4 $Public_check_ip5
		do
			route add -host $ip gw $wan1gwtemp dev $wan_phy
			wan1gw_ok=`ping $ip -w 2 -I $wan_phy | grep "bytes from"`
			logg ping wan1: $wan1gw_ok
			if [ -z "$wan1gw_ok" ]
			then 
				wan1gw_ok=""
				route del -host $ip gw $wan1gwtemp dev $wan_phy
				logg_notice "==========wan1 ping $ip fail_============="
				if [ $ip == $Public_check_ip5 ];then
					#确认网络不通
					logg "NOT changes"
				fi
			else					
				logg "fixing route to wan1 ... " 
				defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
				defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
				[ "$defaultroute" == "$wan1gwtemp" -a "$defaultphy" == "$wan_phy"  ] || ( route del default dev $dev4g_Sim1;route del default dev $dev4g_Sim2;
					defaultroute=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $2}' | sed -n '1p'`
					defaultphy=`route -n | grep 0.0.0.0.*0.0.0.0 |  awk '{print $8}' | sed -n '1p'`
					[ "$defaultroute" == "$wan1gwtemp" -a "$defaultphy" == "$wan_phy"  ] || ( ip route add default via $wan1gwtemp dev $wan_phy metric 100; logg_notice "wan1 tobe defroute" )
				)
				route del -host $ip gw $wan1gwtemp dev $wan_phy
				logg "fixing ...  OK" 
			

				exit 0;
			fi
		done

	fi

fi


exit 0
$ 
$ cat etc/init.d/Net_4G_Check.sh 
#!/bin/sh

#change by mxw
#check ip creg NetMode_Status 
#
#
#

#LOGG_STYLE="tty"
#LOGG_STYLE="file"
LOGG_STYLE="logger"
#LOGG_STYLE="tty+logger"
# RemoteLog=`uci get system.@system[0].remote_log_ip`
# if [ "$RemoteLog" != "0.0.0.0" ];then
	# LOGG_STYLE="file+logger"
# fi


logg()

fc_soft_ver="19006.1000.00"
SIM1_Fail_4G_Num=0
SIM2_Fail_4G_Num=0
Sim_Work_Mode=$(uci get apnset.@apnset[0].Work_Mode)

for x in one two
do
	#4G1
	Creg_Status_4G1=`cat /tmp/usrlte_info_Check | grep "unregistered"`
	NetMode_Status_4G1=`cat /tmp/usrlte_info_Check | grep "NoService"` 
	lte_soft_version_4G1=`cat /tmp/usrlte_info_Check | grep "Software version number" | cut -d " -f2 | cut -d . -f 1-3`
	#4G2
	Creg_Status_4G2=`cat /tmp/usrlte_info_Check_Sim2 | grep "unregistered"`
	NetMode_Status_4G2=`cat /tmp/usrlte_info_Check_Sim2 | grep "NoService" `
	lte_soft_version_4G2=`cat /tmp/usrlte_info_Check_Sim2 | grep "Software version number" | cut -d " -f2 | cut -d . -f 1-3`

	#如果文件存在,说明拨号ok,才去检查
	#if [[ -f "/tmp/usrlte_info_Check" ]];then
	if [[ $x ]];then

		DEVICE_4G1=`ifstatus wan_4g1 | grep device -w | awk -F '"' '{print $4}'`
		Ip_4G1=`ifconfig $DEVICE_4G1 | grep "inet addr"`
			
		logg "4G1 $DEVICE_4G1 = $Ip_4G1" 
		logg "Creg_Status_4G1 = $Creg_Status_4G1" 
		logg "NetMode_Status_4G1 = $NetMode_Status_4G1" 
		
		#如果ip为空或者creg未注册 && NetMode无服务
		if [[ "$Ip_4G1" == "" -o "$Creg_Status_4G1" != "" -a "$NetMode_Status_4G1" != "" 
				-o "$NetMode_Status_4G1" != "" -a "$lte_soft_version_4G1" == "$fc_soft_ver" ]]; then
			
			let SIM1_Fail_4G_Num+=1
					
			if [[ $SIM1_Fail_4G_Num -ge 2 ]];then
				logg "*******restart usr_lte*****"  
				ps | grep usr_lte | grep -v grep | awk '{print $1}' | xargs kill -s 9
				gpio s 24 1; sleep 5; gpio s 24 0;
				/bin/usr_lte &
				rm -rf /tmp/usrlte_info_Check
			fi
		else
			#IP有且creg注册且有网络服务,才会执行到此
			SIM1_Fail_4G_Num=0
		fi
		
	fi
	
	sleep 5
	#如果文件存在,说明拨号ok,才去检查
	#if [[ -f "/tmp/usrlte_info_Check_Sim2" ]];then
	if [[ $x ]];then

		DEVICE_4G2=`ifstatus wan_4g2 | grep device -w | awk -F '"' '{print $4}'`
		Ip_4G2=`ifconfig $DEVICE_4G2 | grep "inet addr"`
			
		logg "4G2 $DEVICE_4G2 = $Ip_4G2" 
		logg "Creg_Status = $Creg_Status_4G2" 
		logg "NetMode_Status = $NetMode_Status_4G2" 
		
		#如果ip为空或者creg未注册或者NetMode无服务
		if [[ "$Ip_4G2" == "" -o "$Creg_Status_4G2" != "" -a "$NetMode_Status_4G2" != "" 
				-o "$NetMode_Status_4G2" != "" -a "$lte_soft_version_4G2" == "$fc_soft_ver" ]]; then
			
			let SIM2_Fail_4G_Num+=1
					
			if [[ $SIM2_Fail_4G_Num -ge 2 ]];then
				#热模式 开启
				#热模式 未开启
				#冷模式 开启
				#冷模式 未开启 -->不检测
				eixt=`ps | grep usr_backuplte | grep -v grep`
				if [[ "$Sim_Work_Mode" == "ColdMode" -a "$eixt" == ""  ]];then
					rm -rf /tmp/usrlte_info_Check_Sim2
					logg "*******ColdMode and no start usr_backuplte, not check *****"  
				else
					logg "*******restart usr_backuplte*****"  
					ps | grep usr_backuplte | grep -v grep | awk '{print $1}' | xargs kill -s 9
					gpio s 25 1; sleep 5; gpio s 25 0;
					/bin/usr_backuplte &
					rm -rf /tmp/usrlte_info_Check_Sim2
				fi
			fi
		else
			#IP有且creg注册且有网络服务,才会执行到此
			SIM2_Fail_4G_Num=0
		fi
		
	fi
	
	logg "Net_4G_Check.sh $x" 

	sleep 50
done

$ 
$ cat etc/init.d/limit_ip_rate 
#!/bin/sh /etc/rc.common

#  定义进出设备(IDEV 内网接口
IDEV="br-lan"
ODEV=`route -n |sed -n 3p|awk -F ' ' '{print $8}'`
 j=256;
 
init_limit()



ip_rate_limit()

	# 受限IP范围,IPS 起始IP,IPE 结束IP。
	#IPS="100"
	#IPE="145"
	#取startip的前10-13位
	IPS=${startip:10:13}
	IPE=${endip:10:13}
	Download=$downstream
	Upload=$upstream
    echo "rate:"$Download
	echo "rate:"$Upload
	echo $INET
	echo $IPS
	echo $IPE
    echo $IDEV
	# 限速循环
	i=$IPS;
	touch /root/$IPS;
	while [ $i -le $IPE ]
	do
	# 定义第二层叶类别
	# rate 保证频宽,ceil 最大频宽,prio 优先权
	tc class add dev $IDEV parent 10:1 classid 10:${i} htb rate 10kbps ceil ${Download}kbps prio 1
	tc class add dev $ODEV parent 20:1 classid 20:2${i} htb rate 10kbps ceil ${Upload}kbps prio 1

	# 定义各叶类别的队列规则
	# parent 类别编号,handle 叶类别队列规则编号
	tc qdisc add dev $IDEV parent 10:${i} handle ${i}: pfifo
	tc qdisc add dev $ODEV parent 20:2${i} handle 2${i}: pfifo

	# 设定过滤器
	tc filter add dev $IDEV parent 10: protocol ip prio 100 handle ${i} fw  classid 10:${i}
	tc filter add dev $ODEV parent 20: protocol ip prio 100 handle 2${i} fw  classid 20:2${i}

	iptables -t mangle -A POSTROUTING -d ${INET}${i} -j MARK --set-mark ${i}
	iptables -t mangle -A PREROUTING -s ${INET}${i} -j MARK --set-mark 2${i}
	#iptables -t mangle -A POSTROUTING -s ${INET}${i} -j MARK --set-mark ${i}
	
	
	 i=`expr ${i} + 1`
	done
	
}

mac_rate_limit()
 htb rate 10kbps ceil ${downstream_mac}kbps prio 1
	tc class add dev $ODEV parent 20:1 classid 20:2${j} htb rate 10kbps ceil ${upstream_mac}kbps prio 1

	# 定义各叶类别的队列规则
	# parent 类别编号,handle 叶类别队列规则编号

	tc qdisc add dev $IDEV parent 10:${j} handle ${j}: pfifo
	tc qdisc add dev $ODEV parent 20:2${j} handle 2${j}: pfifo

	# 设定过滤器
		
	tc filter add dev $IDEV parent 10: protocol ip prio 100 handle ${j} fw  classid 10:${j}
	tc filter add dev $ODEV parent 20: protocol ip prio 100 handle 2${j} fw  classid 20:2${j}

	iptables -t mangle -A POSTROUTING -d $ip -j MARK --set-mark ${j}
	iptables -t mangle -A PREROUTING -s $ip -j MARK --set-mark 2${j}
	
	echo ${j}
	
	
	 j=`expr ${j} + 1`
		
}

start()
{  	
    #touch /root/aaa.sh
   	# /etc/init.d/firewall restart
	config_load ratelimit
	init_limit
	config_foreach ip_rate_limit domain
	config_foreach mac_rate_limit domain_mac
	#default_limit
	
}

$