接続が失われたときに AP に再接続する bash スクリプトを作成する

接続が失われたときに AP に再接続する bash スクリプトを作成する

Ubuntu の WIFI に問題があります。システムを更新しようとしましたが、それでも同じことが起こります。突然ルーターとの接続が失われ、WIFI バーを押してもシステムが AP を検出しません。[WIFI を有効にする] オプションのチェックを外して再度チェックすると、自動的に再接続されます。

何らかの理由で PC がルーターから切断されたことを検出し、切断されたら Wi-Fi を無効にしてから有効にする bash スクリプトを作成したいと考えています。つまり、接続のリセットを自動化することは可能ですか?

これを使わなければならないと思う

nmcli nm wifi off
nmcli nm wifi on

しかし、PC が Wi-Fi から切断されているかどうかをスクリプトに知らせるにはどうすればよいでしょうか?

答え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

関連情報