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

Ale*_*der 4 bash wireless networking

我在 ubuntu 上遇到了 WIFI 问题,我尝试更新系统,但仍然发生的情况是我突然失去了与路由器的连接,当我按下 WIFI 栏时,系统将检测不到任何 AP取消选中“启用WIFI”选项,然后重新选中它以使其正常工作,它会自动重新连接。

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

我想我必须使用这个

nmcli nm wifi off
nmcli nm wifi on
Run Code Online (Sandbox Code Playgroud)

但是如何让脚本知道 PC 是否与 WIFI 断开连接?

Rad*_*anu 9

它比你想象的更简单:

#!/bin/bash

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

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

  • 你有没有在你的生活中见过谷歌网站? (2认同)

Rma*_*ano 5

尽管答案是正确的,但您必须考虑到:

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
Run Code Online (Sandbox Code Playgroud)