我正在尝试通过连接 GSM 调制解调器的串行端口连接到 GPRS 网络。
当我/usr/sbin/pppd call <peer_name>
从命令行调用时,它会正确接收并处理来自键盘的Ctrl+ C。
但是当我将完全相同的命令放在一个空的 shell 脚本中时(#!
顶部有或没有 shebang ),chmod +x
它并从 shell 提示符运行它,然后pppd
开始运行 - 但它完全忽略了Ctrl+C组合键。Ctrl+Z工作正常。
这是pppd
对等文件的内容
nodetach
dump
connect "connect_script"
disconnect "disconnect_script"
/dev/ttyS0
noauth
Run Code Online (Sandbox Code Playgroud)
我测试了另一个我为连接到 PPTP VPN 服务器而创建的对等文件 - 具有相同的结果。PPTP 不需要聊天脚本,所以我排除了chat
命令或串行端口链接属性的问题。
操作系统是 debian 7。
任何想法这里发生了什么?
从 stackoverflow.com 转移问题 不幸的是,无法从 stackoverflow.com 删除此问题。
我正在尝试通过串行线路在两台 Linux 计算机之间建立 PPP 连接。我按照这些说明进行操作,但没有成功。这两台机器Fedora 28 Linux
位于Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz
一个定制板上,并带有Linux 4.14.0-xilinx-v2018.2
一个ARMv7 A
.
以下是我在机器上得到的命令和输出Fedora
:
$ sudo pppd -detach debug passive lock xonxoff 192.168.10.100:192.168.10.1 /dev/ttyUSB0 9600
[sudo] password for user:
using channel 3
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
sent [LCP ConfReq id=0x1 <asyncmap 0xa0000> <magic 0x888f0bcb> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0xa0000> <magic 0x888f0bcb> <pcomp> <accomp>]
sent [LCP …
Run Code Online (Sandbox Code Playgroud) 我正在使用 PPP 与设备通信。到目前为止,我一直在做的是在我的机器(Fedora 29)和设备(Yocto Linux)上实例化 PPP。然后我打开 TCP/UDP 套接字并与设备通信。我的串行链路(这就是我使用 PPP 的原因)的波特率较低,准确地说是 4800。我无法更改它,这是项目要求。我一直在阅读一些有关 PPP 的内容,据我所知,我不能只是实例化它并直接使用它。我必须使用 TCP/IP/UDP。我对么?换句话说,一旦我建立了 PPP 连接,唯一的使用方法就是打开套接字(UDP 或 TCP)并通过它与设备通信。我不能只创建应用程序级数据包并告诉 PPP 发送它,我必须经过 TCP/IP 层(传输层)。
我有一个名为的进程network_manager
,它在某个时候运行一个命令/usr/sbin/pppd
。一切正常。
但是,某些文件在文件系统上变得不可读,我使用sudo chmod -R 777 rootfs
它来获得访问权限。运行此命令后,network_manager
无法再运行/usr/sbin/pppd
,出现错误:
/usr/sbin/pppd: must be root to run /usr/sbin/pppd, since it is not setuid-root
我不明白,运行chmod 777
并没有改变所有者,pppd
为什么它不再工作?
它通过设置工作
chown root /usr/sbin/pppd
chmod u+s /usr/sbin/pppd
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么
pppd ×4
ppp ×3
bash ×1
linux ×1
permissions ×1
serial-port ×1
shell-script ×1
signals ×1
tcp-ip ×1