有没有更好的方法来自动检查并重新启动网络接口?

有没有更好的方法来自动检查并重新启动网络接口?

我有一台运行 ubuntu 16.04 的媒体和 PVR 服务器,偶尔会失去有线连接(IP 从 ifconfig 输出中消失;桌面上的图标显示已连接但实际上未连接)。接口是 dhcp,但由路由器静态分配。如果我没有注意到它几个小时或几天都处于宕机状态,我就会错过录制节目(这让妻子很伤心)。

在阅读了 askubuntu 和其他地方的众多方法后,我的解决方案是简单地将“ifup -a”添加到 cron.hourly。这样做是否会降低性能或产生其他影响?有没有更好或“认可”的方法来自动检查和重新启动网络接口?我不知道它为什么会掉线——电线保持连接状态,机器直接连接到我的主要(非托管)交换机。

在 /etc/网络/接口:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
auto enp0s10
iface lo inet loopback
iface enp0s10 inet dhcp

答案1

一个解决方案是先实际检查接口是否启动,然后使用类似下面的脚本重新启动网络管理器服务(如果没有)。这将检查单个 ping 是否

if ! ping -Q 1 -c 1 -t 60 google.com; then
echo warning: lost network connection >>/var/log/syslog
    service network-manager restart
fi

并在您认为足够的时间段使用 cron 启动它。

您可能希望增强 -Q 参数,正如所讨论的那样这里如果您没有获得预期的结果,但在我的测试中它在 1 处运行良好。您可能还需要调整 -t 参数以适合您的环境。

当然你必须正确设置 cron 任务使其工作。

资料来源:

https://unix.stackexchange.com/questions/133931/automatically-restarting-network-connection

man ping

如何正确设置 root cron 任务

测试。

相关内容