我使用 USB LTE 调制解调器将我的 Ubuntu 18.04 服务器连接到 LTE 网络。调制解调器是 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard。我编写了一个 systemd 脚本,在启动时启动连接:
[Unit]
Description=Swan LTE connection
Requires=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/root/swan_connect.sh
[Install]
WantedBy=multi-user.target
swan_connect.sh 包含:
#!/bin/bash
/bin/echo -e "AT^NDISDUP=1,1,\"internet2\"\r" > /dev/ttyUSB0
/bin/sleep 2
/usr/sbin/netplan apply
它运行正常,但问题是 LTE 连接每 48 小时(或发生中断时)就会断开一次,我需要重新连接并获取新的 IP。我目前每分钟通过 crontab 脚本执行此操作 - 如果我无法 ping 一个 IP,那么它将通过以下命令重新连接:
/usr/sbin/netplan apply
/bin/echo -e "AT^NDISDUP=1,0,\"internet2\"\r" > /dev/ttyUSB0
/bin/sleep 2
/bin/echo -e "AT^NDISDUP=1,1,\"internet2\"\r" > /dev/ttyUSB0
/bin/sleep 2
/usr/sbin/netplan apply
再说一遍 - 它运行良好,但我只是在想是否没有这个重新连接的 systemd 版本。是否可以编写一个 systemd 脚本,以便当 LTE 连接断开时,systemd 可以重新连接该连接?
答案1
systemd
提供多种激活服务的方式,包括基于路径的激活如果文件状态改变则启动服务。
没有内置设施可以对网络连接中断做出反应。
systemd
确实包括systemd 定时器作为 Cron 的替代品,但最终结果是相同的设计:对间隔执行检查。