Linux 4G模块pppd拨号上网脚本解析

在编写脚本之前,要先安装好ppp相关驱动,pppd

已知pppd位于 /usr/sbin , chat 位于 /usr/sbin , options 位于 /etc/ppp 。

要编写脚本,就要切换目录到 /etc/ppp/peers,若没有peers目录则自行创建。因为是在/etc目录之下,需要使用sudo或者进入root模式才能创建或者编辑。安装ppp时,pppd就已经被固定到系统路径 /etc/ppp 找options, 到 /etc/ppp/peers 找脚本文件。可到ppp源码 ppp-2.4.7/pppd 下找pathnames.h 修改,如图:

所有的配置流程都是:

chat脚本的配置,options的脚本配置,该脚本会引用chat脚本,pppd应用程序会调用options脚本,如果需要用户、密码登陆,就要配置chat-secret或者pap-secret,该脚本也会被options脚本引用。

1.首先拷贝pppd和chat到/usr/sbin目录;

2.然后编写三个脚本,option脚本要注意的是串口设备名称,不要复制网上的脚本,一定要使用可用的串口设备名称。

pppd [ options ]

pppd应用程序会调用options脚本文件,得益于pppd程序的一个选项参数 call name

call name 和下面rasppp脚本中的选项一样,都是pppd的参数

它的解释是这样的:从/etc/ppp/peer/ name文件中读取其他选项该文件可能包含特权选项,如noauth,即使pppd不是由root运行。name字符串不能以/开头,也不能包含…作为一个路径名组件。

我们通常把这些选项放在name文件中,然后我们只需要pppd call name就可以了

rasppp
# /etc/ppp/peers/rasppp
 
# Usage: sudo pppd call rasppp
 
# 连接调试时隐藏密码
hide-password
 
# 该手机不需要身份验证
noauth
 
# 用于呼叫控制脚本
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-connect-chat'
 
# 断开连接脚本
disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-disconnect-chat'
 
# 调试信息,pppd将以可读的形式记录所有发送或接收的控制数据包的内容
debug
 
# 4G模块对应的串口设备名称
/dev/ttyUSB4
 
# 串口波特率
115200
 
# 使用默认路由,IPCP协商成功后,在系统路由表中添加一条缺省路由,使用对等体作为网关。当PPP连接断开时,删除此表项。
defaultroute
 
# 不使用默认IP:当没有指定本地IP地址时禁用默认行为,这是为了从主机名确定(如果可能)本地IP地址。
noipdefault
 
# 不使用PPP压缩
novj
novjccomp
noccp

#使用该选项,pppd将接受对等体对我们本地IP地址的想法,即使本地IP地址在选项中指定
ipcp-accept-local

#通过该选项,pppd将接受对等体对其(远端)IP地址的想法,即使远端IP地址在选项中指定
ipcp-accept-remote

#不要使用调制解调器控制线
local
 
# 指定pppd应该为串行设备创建一个锁文件,以确保对该设备的独占访问,其他程序在发现这个文件后,就能得知相应的串口已经被使用。
lock

#使用转储选项,pppd将打印所有已设置的选项值
dump
 
# 保持pppd连接到终端。在pppd程序需要放到后台运行时,最好不要该选项
nodetach
 
# 用户名 密码
user ctnet@mycdma.cn
password vnet.mobi
#电信需要用户名和密码,移动、联通拨号不需要,下文给出不同运营商的配置
 
# 硬件流量控制
crtscts

#将用于身份验证的远程系统的假定名称设置为name
remotename 3gppp

#为ip-up、ip-pre-up和ip-down脚本提供额外参数。如果提供了这个选项,提供的字符串将作为这些脚本的第6个参数提供
ipparam 3gppp
 
# 向对端请求最多2个DNS服务器地址
usepeerdns
rasppp-connect-chat
# 连续5秒,收到以下字符,则退出执行
# 进行超时控制,增加对特殊情况的处理,加入下面字段
TIMEOUT 5  
ABORT   "BUSY"
ABORT   "ERROR"
ABORT   "NO ANSWER"
ABORT   "NO CARRTER"
ABORT   "NO DIALTONE"
 
#一个chat脚本都是由字符串对来组成的。前面的字符串都是期望获取的串,紧跟的是发送的字符串
# 例如 ""AT,不管收到什么字符串,先发出字符串AT
#      OK \rATZ,发送ATZ,希望收到的是OK
""AT
OK \rATZ
 
# 建立连接,电信为空,下文给出各运营商配置
OK \rAT+CGDCONT=1,"IP",""
 
# 拨号,#777是电信的拨号号码
OK-AT-OK ATDT#777
CONNECT \d\c
rasppp-disconnect-chat
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
 
""\k"
#挂断电话
""+++ATH"
SAY "\nGood bye !\n"

3.执行pppd,成功获取ip。

sudo pppd call rasppp &

4.得到ip和dns后,关掉eth0,添加dns到/etc/resolv.conf,再用route命令添加默认网关为远端ip。

route add default gw xx.xx.xx.xx

5.此时就能ping通外网。

更多的设置可以去学习pppd和chat程序的选项参数~
Linux下man pppd、man chat就可以了
另外,在我的博客中也有两个程序的man手册的翻译

参考链接:https://blog.csdn.net/pjwshuai/article/details/124533452

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值