切断後にwifi接続を維持するにはどうすればよいですか?


9

インターネットを必要とするソフトウェアを実行しているUbuntuマシンを持っています。ただし、wifiが失敗して(ルーターの再起動など)、network-managerの再起動を手動で実行するか、wifiをオフにしてからオンにするまで、ネットワークが見つからないことがあります。

cronジョブまたは監視対象ジョブを実行して接続を監視し、ネットワークが見つからない場合にnetwork-managerサービスを再起動してその特定のSSIDに接続する方法はありますか?


Ubuntu 15.04にアップグレードした後、この問題が最近発生し始めたので、これは新しいネットワークマネージャーのバグが原因である可能性があります。
サディ

1
問題がある可能性があることを示唆する多数のバグレポートがあります。カーネル(uname -a)とネットワークマネージャーのバージョンの詳細、およびWiFiカードの詳細を投稿してください。
DaveM、2015年

回答:


7

最近この問題が発生し始めたばかりなので、これは新しいネットワークマネージャーのバグが原因である可能性があります。Ubuntu15.04にアップグレードした後だと思います。

これらの2つのファイルの回避策として、この問題を一時的に解決できたようです。

  1. 私は、例えば、オフのとき、切断のWiFi接続やトグルのWiFiを監視するスクリプトファイルを持っている~/.bin/WiFi-Keep-Connected。このコンテンツで、:


#!/bin/bash
while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        rfkill block wifi && rfkill unblock wifi
        sleep 10
    fi
    sleep 10
done

  1. 私はまた、ログインするたびにこのスクリプトを実行し続けるための.desktopファイルを持っています~/.config/autostart/KeepWifiConnected.desktop


[Desktop Entry]
Type=Application
Exec=/home/"username"/.bin/WiFi-Keep-Connected
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Keep WiFi Connected
Icon=networkmanager

注:Exec=上記のパスにユーザー名を入力する必要があります。

注:この方法でWi-Fi再起動するだけでは不十分な場合があります。その場合、ターミナルからこのコマンドを1回または2回入力してNetwork Manager再起動する必要があります。sudo service network-manager restart

したがって、あるかもしれない、より良い、このような(念のため)上記のスクリプトを修正するためのアイデア:


#!/bin/bash
while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        rfkill block wifi && rfkill unblock wifi
        sleep 10
    fi
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        gksudo service network-manager restart
        sleep 10
    fi
    sleep 10
done


1

理由はわかりませんが、あなたが言うように、wifiが失敗したときに、network-managerがネットワークを再度検出しないことがあります。

問題は、wifi接続に失敗した後、ネットワークマネージャーがwifiリストを更新しないことです(ネットワークマネージャーが問題のあるネットワークを隠しているようです)。ネットワークマネージャーには再スキャンメニューオプションがありません。ネットワークマネージャーメニューのワイヤレスチェックボックスを無効および有効にしても、新しいwifiスキャンは強制されません(サービスの再起動とは異なります)。

network-managerが私のワイヤレス接続を失い、それが私のwifiを再び見つけられないとき(そして私はwifiが機能していることを知っています)、私はコマンドを実行します:

sudo iwlist wlan0 scan

wlan0インターフェイス(wlan0は私のラップトップのワイヤレスインターフェイスの名前です)でwifiスキャンを実行し、利用可能なワイヤレスネットワークを表示しますが、副作用としてnetwork-managerがリストを自動的に更新し、失われたネットワークを検出します。

この問題が発生した場合は、コマンドを手動で実行することをお勧めします(ネットワークを再接続しても通信の再開は保証されず、一部のプログラムを再起動する必要があります)。

しかし、あなたが言及したように、それをcronすることができ、接続をテストせずにそれを行うことができます(接続されている場合、スキャンプロセスはwifiリストを更新しますが、現在のワイヤレス接続を閉じません)。

必要に応じて、pingまたはiwconfigを使用して接続性をテストできます。接続していない場合は、スキャンを起動します。

何かのようなもの:

#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
    iwlist wlan0 scan
fi

ただし、このスクリプトは、sudoするか、root権限で実行する必要があることに注意してください。タイムアウトが1秒のpingを1つだけ送信します。


上記のソリューションは問題ありませんが、接続が切断されたというネットワークマネージャー(nm)からの通知をどのようにキャッチするかです。これはnm自体から可能であるはずです。ソースをざっと見てみると、そこに機能性があることがわかります。メッセージはdbusから取得され、nmアイコンが更新されるので、これはバグである可能性があります。または、システムの別の部分が接続のドロップをキャッチし、変更されたため、再接続を試行する通知が通過しなくなった可能性があります。
DaveM、2015年

0

問題は、ルーターの接続性の問題が原因で接続が失われることだと思います。ルーター自体に問題がある場合、ネットワークマネージャーを再起動しても解決できませんでした。むしろ、接続が失われたときにSIGSTOPを使用してソフトウェアを実行しているプロセスを一時停止するスクリプトを作成し、ネットワークが利用可能になったときにSIGCONTを使用して続行するために再度トリガーすることができます。そして、スクリプトをcronジョブに追加し、毎分実行するようにスケジュールします。

参考までに:http : //hints.macworld.com/article.php?story=20030915193440334

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.