この投稿では、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/crontab
を1
1分単位で調整することをお勧めします
。また、これにより、すぐにシェルセッションから切断されることに注意してください。
wlan0
スクリプトが機能することを確認するために停止するには、次を実行します。
ifdown --force wlan0
〜1分間辛抱強く待った後、RaspberryPiにSSHで接続してみてください。すべてが機能していると仮定すると、RaspberryPiは自動的にWiFiに再接続するはずです。etc/crontab
テストのために1分に設定した場合、間隔をより適切な値に戻すことを忘れないでください。
ソース