我在 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