我需要使用 wifi 创建故障转移 - 连接到无线 3G 调制解调器和连接到 adsl 路由器的局域网
当 Adsl 出现故障时,需要故障转移到 wlan0 上的 3G
我已在线尝试过许多脚本,但均不起作用,请将我需要的正确脚本发送给我。
PS:我需要检查诸如 www.google.com 之类的主机,如果仅在物理拔下以太网电缆后才进行故障转移,则故障转移将毫无用处。如果我拔下路由器上的电话线,它必须进行故障转移
答案1
运行nmcli con list
找出您的 3G 连接的 UUID,然后运行sudoedit /usr/local/bin/inettest
并复制以下内容:
#!/bin/bash
ping -I eth0 -q -c 2 8.8.4.4 > /dev/null 2>&1
if [ $? -ne 0 ]; then
nmcli con down uuid 03e5a69a-2682-47df-a443-59cec06802aa
else
nmcli con up uuid 03e5a69a-2682-47df-a443-59cec06802aa
fi
将上面的 UUID 替换为您的 UUID(显然)并保存。运行chmod +x /usr/local/bin/inettest
以使其可执行。
现在测试一下。
inettest
使用有效连接运行eth0
。- 然后中断
eth0
并再次运行。 - 并修复它并再次运行。
3G 连接应该会恢复,然后又会断开。如果没有,那么脚本可能出了问题。但假设一切运行正常,我们可以安排它每 5 分钟运行一次,方法是运行crontab -e
并在新行中添加以下内容:
*/5 * * * * /usr/local/bin/inettest
您可能需要更严格的分辨率。 Cron 只能精确到分钟地安排,但您可以使用 sleeps 堆叠多个调用。此示例每分钟运行两次:
* * * * * /usr/local/bin/inettest & sleep 30; /usr/local/bin/inettest
我认为你不会想走得比这更紧。