4G转wifi方案研究:openwrt与ppp(四)自动重新拨号脚本-第二版-核心-ppp0

4G转wifi方案研究:openwrt与ppp(四)自动重新拨号脚本-第二版-核心-ppp0

  • 前言
  • 脚本编写
    • 第二版本
    • 第三版本
  • 运行脚本
  • 结语

前言

经过一段时间的调试,我发现ppp拨号获取网络延迟程度很高,因此上一篇博文里用ping网来判别断线与否很不稳定,于是我重新设计一个脚本,这个脚本的缺点是响应偏慢,优点是可以容忍更大的ping延迟(我当前最大延迟是30s)。
。。。。。。。。。。。。。。。。。。。。。。。。。。。
2020.6.1 日
后续优化发现一个问题需要等待50s判断拨号失败太久了,应该如何优化呢?切入点有2个

  1. 结束进程,对此测试结果为kill %num有效,killall pppd 无效
  2. 缩短判定时间,对此没有找到可以修改的文件,暂时搁置

。。。。。。。。。。。。。。。。。。。。。。。。。。。
2020.6.1 日
重新研究killall 命令,得出解决方案最终生成第三版本,提高效率

脚本编写

设计思路:
拨号通过后会在目录:/var/run/ 下生成一个文件:ppp0.pid,如果拨号断开这个文件会删除
因此可以通过判别这个文件的存在来进行判断模块的ppp通路是否联通。
代码
先在目录下创建:
vi /bin/my_pppd.sh
再键入代码:

第二版本

#!/bin/sh                
sleep 2                        
echo "start my_pppd.sh"                              
sleep 3                                                                                                
while true                                             
do                                        
	if  [ -e /var/run/ppp0.pid ]                           
	then                                        
		echo "ppp0 fine"
		sleep 12        
	else               
		echo "[[WARNING]] ppp0 down ,call again"
		sleep 1
		pppd call lte & 
		sleep 50  #need more than 46 second
	fi                                                                          
done   

第三版本

#!/bin/sh                
sleep 2                        
echo "start my_pppd.sh"                              
sleep 3                                                                                                
while true                                             
do                                        
	if  [ -e /var/run/ppp0.pid ]                           
	then                                        
		echo "ppp0 fine"
		sleep 2        
	else               
		echo "[[WARNING]] ppp0 down ,call again"
		sleep 1
		pppd call lte & 
		sleep 5  
		if  [ -e /var/run/ppp0.pid ]                           
		then                                        
			echo "call OK"
			sleep 1        
		else               
			echo "[[WARNING]] call failed need again"
			sleep 1
			killall chat 
			sleep 1
			killall pppd
			sleep 10  
		fi    
	fi                                                                          
done   

运行脚本

先给与脚本权限

chomd 777 my_pppd.sh
然后
my_pppd.sh或者my_pppd.sh&
剩余步骤参考上一篇博文
4G转wifi方案研究:openwrt与ppp拨号与rt3070(三)自动重新拨号脚本

结语

经过实际测试,这个脚本能够确实实现我的需求。对此我感到自身有所进步,很高兴。

你可能感兴趣的:(4G转wifi方案)