制作一个在连接丢失时重新连接到 AP 的 bash 脚本

制作一个在连接丢失时重新连接到 AP 的 bash 脚本

我在 ubuntu 上使用 WIFI 时遇到了问题,我尝试更新系统,但问题仍然相同,我突然与路由器失去连接,当我按下 WIFI 栏时,系统无法检测到任何 AP,我必须取消选中“启用 WIFI”选项,然后重新检查它以使其工作,它会自动重新连接。

我正在考虑制作一个 bash 脚本,用于检测 PC 因某种原因与路由器断开连接的情况,并在断开连接时禁用然后启用 wifi。我的意思是可以自动重置连接吗?

我想我必须用这个

nmcli nm wifi off
nmcli nm wifi on

但是我怎样才能让脚本知道 PC 是否已与 WIFI 断开连接?

答案1

它比你想象的更简单:

#!/bin/bash

if ! [ "$(ping -c 1 google.com)" ]; then
    nmcli nm wifi off
    nmcli nm wifi on
fi

然后您可以使用 cron 作业让此脚本每分钟运行一次。

答案2

虽然答案是正确的,但你必须考虑到:

1)无论用户是否登录,它都会起作用---这可能是所需的行为,也可能不是,取决于应用程序;

2)如果重新连接延迟超过 1 分钟,您将永远无法到达那里......

我编写了一个简单的脚本,可以与图形会话的启动脚本一起运行,这是一个不错的选择。我将其输出重定向到一个文件,以便我可以使用我的实用程序 SLogger 跟踪它。

这是脚本——你永远不知道。

#!/bin/bash
while /bin/true; do
    if ! [ "$(ping -c 1 google.com)" ]; then
        echo "Warning: connection lost at $(date) -- restart"  
        nmcli nm wifi off
        sleep 5
        nmcli nm wifi on
        sleep 60
        if ! [ "$(ping -c 1 google.com)" ]; then
             echo "Waiting for connection going up at $(date)"
             sleep 60
        else 
             echo "Connection on at $(date)" 
        fi
#    else
#        echo "Connection OK on $(date)"
    fi
sleep 60
done

相关内容