製作一個 bash 腳本,在連線遺失時重新連線到 AP

製作一個 bash 腳本,在連線遺失時重新連線到 AP

我在 ubuntu 上遇到 WIFI 問題,我嘗試更新系統,但情況還是一樣,我突然失去了與路由器的連接,當我按下 WIFI 欄時,系統不會檢測到任何我必須檢測的 AP取消選中“啟用WIFI」選項,然後重新選取它,它就可以工作,它會自動重新連線。

我正在考慮製作一個 bash 腳本來檢測電腦何時因任何原因與路由器斷開連接,並在斷開連接時禁用然後啟用 wifi。我的意思是像自動重置連接一樣可能嗎?

我想我必須用這個

nmcli nm wifi off
nmcli nm wifi on

但我怎麼能讓腳本知道電腦是否與 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

相關內容