$ 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
}
$