ラズパイのネットワーク接続監視とリブート設定

published_with_changes 更新日: event_note 公開日:

labelamazon alexa labelBlynk labelIoT labelRaspberry pi

ラズパイのネットワーク接続監視とリブート設定


既報:Raspberry pi サーバの起動時にIPアドレス取得で検討したが、あきらめた A仕様:「ルータが再起動したら、ラズパイがIPアドレスを読み取り、DynamoDBに保管する」案の代替策を思いついたので、記録しておきます。

Q: ネットワーク接続が切れたらラズパイをリブートできますか?

Google Gemini Logo はい、可能です。ネットワーク接続を監視するスクリプトと、cronジョブを組み合わせることで実現できます。

実現方法

  1. ネットワーク接続を監視するPythonスクリプトを作成します。
  2. スクリプトに実行権限を付与します。
  3. cronジョブにスクリプトの定期実行を登録します。
  4. リブート時にIPアドレスを報告するcronジョブを確認します。

Pythonスクリプト例


#!/usr/bin/env python3
import subprocess
import time
import os

def is_network_available():
    """ネットワーク接続を確認する関数"""
    try:
        subprocess.check_call(['ping', '-c', '1', '8.8.8.8'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
        return True
    except subprocess.CalledProcessError:
        return False

def reboot_if_network_down():
    """ネットワーク接続が切れた場合にリブートする関数"""
    if not is_network_available():
        print("ネットワーク接続が切断されました。システムをリブートします。")
        os.system("sudo reboot")
    else:
        print("ネットワーク接続は正常です。")

if __name__ == "__main__":
    while True:
        reboot_if_network_down()
        time.sleep(60)  # 1分ごとに確認
        

補足

  • pingコマンドの宛先は必要に応じて変更してください。
  • time.sleep()の間隔は確認頻度に合わせて調整してください。
  • check_network.logに実行結果が記録されます。
  • セキュリティ上の理由から、sudo rebootをcronジョブで実行する場合は注意が必要です。

Q: pingコマンドの宛先はなぜ変更する必要があるのですか?

Google Gemini Logo pingコマンドの宛先を変更することで、ネットワーク接続の確認精度や対象を調整できます。

宛先変更の理由

  • 信頼性: より安定した宛先や複数の宛先で確認できます。
  • ネットワーク環境: ファイアウォールなどで特定の宛先へのpingが制限されている場合があります。
  • 目的: インターネット接続だけでなく、特定のサーバーやデバイスへの接続も確認できます。

宛先の例

  • 一般的なインターネット接続確認: 8.8.8.8 (Google Public DNS), 1.1.1.1 (Cloudflare DNS)
  • ローカルネットワーク確認: ルーターのIPアドレス, ローカルネットワーク内の他のデバイス
  • 特定のサーバー確認: 社内サーバー, 特定のWebサービス

変更方法

Pythonスクリプト内のsubprocess.check_call(['ping', '-c', '1', '8.8.8.8'], ...)の行で、8.8.8.8を別のIPアドレスまたはホスト名に置き換えます。

Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down