当前位置:   article > 正文

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
rasppp-disconnect-chat
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
 
""\k"
#挂断电话
""+++ATH"
SAY "\nGood bye !\n"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/188915
推荐阅读
相关标签
  

闽ICP备14008679号