针对传入连接自动运行 pppd

针对传入连接自动运行 pppd

我的 1989 Mac SE/30 通过空调制解调器 USB RS232 适配器使用 PPP 连接到我的 Debian 10 路由器。

当我想要连接时,我首先必须从另一台机器通过 SSH 进入 debian 并运行

# pppd nodetach /dev/ttyUSB0 57600 -crtscts

此外,如果 Mac 断开连接然后pppd退出,为了重新连接,我必须再次执行相同的操作。

可以自动pppd收听吗ttyUSB0?并熬夜?

(我找到的所有文档都是为了使用 PPP 作为拨号互联网连接的客户端,而不是作为服务器。)

更新

mini31 # pwd
/etc/systemd/network
mini31 # ls -l
total 4
-rw-r--r-- 1 root root 187 Jun 14 12:12 pppd-ttyUSB0.service
mini31 # cat pppd-ttyUSB0.service
[Service]
ExecStart=/usr/sbin/pppd nodetach /dev/ttyUSB0 57600 -crtscts
Restart=always
RestartSec=0

[Unit]
Description=pppd on ttyUSB0 for SE/30
After=network.target
Wants=network.target
mini31 # systemctl status pppd-ttyUSB0
Unit pppd-ttyUSB0.service could not be found.
mini31 #

更新2

看起来/etc/systemd/system是唯一有效的文件夹。

此外,您必须:

# systemctl daemon-reload
mini31 # systemctl status pppd-ttyUSB0
● pppd-ttyUSB0.service - pppd on ttyUSB0 for Macs
   Loaded: loaded (/etc/systemd/system/pppd-ttyUSB0.service; static; vendor preset: enabled)
   Active: inactive (dead)
mini31 # systemctl enable pppd-ttyUSB0
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.
mini31 # systemctl start pppd-ttyUSB0

(不知道这些废话enable是关于什么的。)

答案1

创建一个服务运行这个守护进程。在 systemd 服务中,您可以使用该Restart=选项在服务退出时自动再次启动该服务。

[Service]
ExecStart=-/usr/bin/pppd nodetach /dev/ttyUSB0 57600 -crtscts
Restart=always
RestartSec=0

您的情况实际上与 非常相似[email protected],只是使用 pppd 而不是 getty,后者通常在指定的 tty 处等待登录提示。因此,查看该单元以获取灵感可能会很有用 - 例如,您可能希望将其设为模板单元(命名pppd@并用作/dev/%i设备路径);您可能希望包含Conflicts=getty@%i.service在 [Unit] 部分中;等等。

(事实上​​,在“sysvinit”环境中,我建议为 pppd 创建一个 /etc/inittab 条目,这样它就会像 getty 一样由 init 自动重新启动。)

相关内容