1. ppp拨号脚本
拨号脚本比较简单,主要是拨号和重连,主要分为以下步骤
lsusb | grep Quectel
这样查询结果中包含Quectel才会显示,若没有则不显示
可以看出两个命令的区别
echo "raspberry" | sudo wvdial ec20_ppp&
脚本中使用 sudo wvdial ec20_ppp& 考虑到使用root权限输入密码则需要使用这条命令,”raspberry“为密码
若有ppp0网卡,则添加为默认路由
route -n | grep ppp0
echo "raspberry" | sudo route add default dev ppp0
若超时未检测到路由,则重启模块
ping -I ppp0 -c 1 baidu.com
若无法ping通,超时则重启
上面主要是对脚本的拨号内容想法说明
创建脚本
//先创建脚本文件
mkdir ec20-ppp.sh
//编写脚本
...
//脚本运行,后台运行
bash ec20-ppp.sh&
脚本开头必须 #! /bin/bash
#! /bin/bash
ec20_step=0
over_time=0
while [ 1 ]
do
if [ $ec20_step -eq 0 ]; then
result=$(lsusb | grep Quectel)
if [[ $result =~ "EC25" ]]; then
ec20_step=1
else
ec20_step=0
fi
sleep 2
elif [ $ec20_step -eq 1 ]; then
echo "raspberry" | sudo wvdial ec20_ppp&
ec20_step=2
sleep 2
elif [ $ec20_step -eq 2 ]; then
result=$(route -n | grep ppp0)
if [[ $result =~ "ppp0" ]]; then
echo "raspberry" | sudo route add default dev ppp0
ec20_step=3
over_time=0
else
let over_time++
fi
if [ $over_time -eq 12 ]; then
over_time=0
ec20_step=4
fi
sleep 5
elif [ $ec20_step -eq 3 ]; then
result=$(ping -I ppp0 -c 1 baidu.com)
if [[ $result =~ "1 received" ]]; then
over_time=0
else
let over_time++
fi
if [ $over_time -eq 6 ]; then
over_time=0
ec20_step=4
echo "raspberry" | sudo pkill wvdial
fi
ec
sleep 5
elif [ $ec20_step -eq 4 ]; then
echo -e "AT+CFUN=1,1\r\n" > /dev/ttyUSB2
ec20_step=0
sleep 15
fi
done
exit 0
若要开机启动,则加入启动项
sudo vim /etc/rc.local
//在文件exit 0前加入此句,:wq保存,重启即可生效
bash /home/pi/ec20/ec20-ppp.sh
2. qmi_wwan拨号脚本
基本上与上面一样,注意脚本里面quectel-CM的路径,还有不一样的前两节拨号里面已经讲过了
#! /bin/bash
ec20_step=0
over_time=0
while [ 1 ]
do
if [ $ec20_step -eq 0 ]; then
result=$(lsusb | grep Quectel)
if [[ $result =~ "EC25" ]]; then
ec20_step=1
else
ec20_step=0
fi
sleep 2
elif [ $ec20_step -eq 1 ]; then
echo "raspberry" | sudo /home/pi/ec20/quectel-CM/./quectel-CM&
ec20_step=2
sleep 2
elif [ $ec20_step -eq 2 ]; then
result=$(ip route)
if [[ $result =~ "wwan0" ]]; then
ec20_step=3
over_time=0
else
let over_time++
fi
if [ $over_time -eq 12 ]; then
over_time=0
ec20_step=4
echo "raspberry" | sudo pkill quectel-CM
fi
sleep 5
elif [ $ec20_step -eq 3 ]; then
result=$(ping -I wwan0 -c 1 baidu.com)
if [[ $result =~ "ttl" ]]; then
over_time=0
else
let over_time++
fi
if [ $over_time -eq 4 ]; then
over_time=0
ec20_step=4
echo "raspberry" | sudo pkill quectel-CM
fi
sleep 5
elif [ $ec20_step -eq 4 ]; then
echo -e "AT+CFUN=1,1\r\n" > /dev/ttyUSB2
ec20_step=0
sleep 15
fi
done
exit 0
3. 注意说明
上面两个脚本的内容可根据自己的想法去编写,上面只是一个最简单使用示例,检测效率并不是很高,实际生产使用,还需要考虑更为全面一些。 编写脚本时多查询一些脚本语言的格式和使用方式。
|