「CTRL-EVENT-SSID-TEMP-DISABLED」イベントでwlanが無効になる期間


1

時々ルーターがダウンすることがあり(ファームウェアの更新から)、その間に時々Raspberry Piも再起動し、ログに次のように表示されます

Jul 25 10:00:49 raspberrypi wpa_supplicant[536]: wlan0: Trying to associate with 80:3f:5d:99:b7:63 (SSID='X' freq=2462 MHz)
Jul 25 10:00:49 raspberrypi wpa_supplicant[536]: wlan0: CTRL-EVENT-ASSOC-REJECT status_code=16
Jul 25 10:00:49 raspberrypi wpa_supplicant[536]: wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="X" auth_failures=1 duration=10 reason=CONN_FAILED

その時点でWiFiが利用できなかったため、これは問題ありませんが、WiFiは数分以内に戻ってきます。現時点で、私が見つけることができる唯一の「修正」は、Piを再起動することです。

ただし、家にいない場合は、もう一度やり直してください。3時間放置したが、再試行されなかったので、もう一度試してみませんか?このケースを処理させる方法はありますか?


@McDonaldはWiFiが復帰すると、Piからのメッセージがまったくなく、再接続を試行しません。再起動するまでログは空です。
オートマトン

@マクドナルドありがとう!これが答えだと思います。
オートマトン

回答:


1

RaspberryPiでWiFiを自動的に再接続する

この投稿では、RaspberryPiをWiFiネットワークに自動的に再接続する短いスクリプトの作成について説明します。スクリプトは、Piにネットワーク接続があるかどうかを確認し、オフラインの場合、ワイヤレスインターフェイスを再起動してオンラインに戻します。cronこのスクリプトの実行を定期的にスケジュールするために使用します。

RaspberryPiにネットワーク接続があるかどうかを判断する方法はいくつかあります。このスクリプトでは、を使用しpingます。

スクリプトを書く

開始するには、RaspberryPiがネットワークに接続されているかどうかを判断する必要があります。これを行うには、サーバーにpingを実行して、応答が返されるかどうかを確認します。コマンドが成功した場合(RaspberryPiがサーバーから応答を受信した場合)、ネットワークに接続できます。コマンドが失敗した場合、wlan0オフにしてから再びオンにします。

#!/bin/bash

# The IP for the server you wish to ping (8.8.8.8 is a public Google DNS server)
SERVER=8.8.8.8

# Only send two pings, sending output to /dev/null
ping -c2 ${SERVER} > /dev/null

# If the return code from ping ($?) is not 0 (meaning there was an error)
if [ $? != 0 ]
then
    # Restart the wireless interface
    ifdown --force wlan0
    ifup wlan0
fi

スクリプトに覚えやすい名前を付け(wifi_rebooter.sh)、このスクリプトをに配置し/usr/local/binます。以下を実行して、実行可能であることを確認します。

chmod +x /usr/local/bin/wifi_rebooter.sh

定期的な実行のスケジューリング

スクリプトを自動的に実行するために、を使用しますcron。このスクリプトを実行する頻度は個人的な好みの問題です。5分ごとにスクリプトを実行することにしました。

スクリプトをスケジュールするには/etc/crontab、編集用に開いて、この行を下部に追加します。

*/5 *   * * *   root    /usr/local/bin/wifi_rebooter.sh

これにより、スクリプトがルートとして5分ごとに実行されるようになります。cron構文に慣れていない場合は、cron形式をご覧ください。

テスト中

スクリプトが期待どおりに機能することをテストするために、wlan0インターフェイスを停止し、スクリプトが起動するのを待ちます。停止する前にwlan0、間隔/etc/crontab11分単位で調整することをお勧めします 。また、これにより、すぐにシェルセッションから切断されることに注意してください。

wlan0スクリプトが機能することを確認するために停止するには、次を実行します。

ifdown --force wlan0

〜1分間辛抱強く待った後、RaspberryPiにSSHで接続してみてください。すべてが機能していると仮定すると、RaspberryPiは自動的にWiFiに再接続するはずです。etc/crontabテストのために1分に設定した場合、間隔をより適切な値に戻すことを忘れないでください。

ソース

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