通过 systemd 连接并重新连接 LTE 调制解调器

通过 systemd 连接并重新连接 LTE 调制解调器

我使用 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 的替代品,但最终结果是相同的设计:对间隔执行检查。

相关内容