LoginSignup
0
0

More than 1 year has passed since last update.

【RaspberryPi+Python】pingを利用してAndroid機器の死活監視をする

Last updated at Posted at 2023-04-05

概要

ラズベリーパイから監視対象(今回Android端末)へpingを送信してタイムアウトすれば障害発生、通れば正常という判定をします。
今回は5秒おきにpingを送信し、これが5回連続で失敗した場合は障害としてLINE NOTIFYに通知を送るようにします。

作成したきっかけ

とあるスマホゲームで自動操作をさせているときにたまにOSの再起動が発生して自動操作が止まってしまっていたため、そのときは携帯電話に通知がしたいなと思いました。
ラズベリーパイを選んだのは省電力で動作することやPythonがデフォルトで搭載されているのでこれが良いのかなという考えからです。

使った物品

  • Raspberry Pi 3b

準備

  • LINE NOTIFYのAPIアクセストークン発行
  • Python用の必要なライブラリのインストール
sudo pip install pings
sudo pip install requests

コード

ping_monitoring.py
import pings
import requests
import time
import datetime

def line(message):
	line_access_token = 'アクセストークン'
	line_url = "https://notify-api.line.me/api/notify"
	line_headers = {"Authorization" : "Bearer "+ line_access_token}
	line_message =  message
	line_payload = {"message" : line_message}
	requests.post(line_url ,headers = line_headers ,params=line_payload)
        
def send_ping(ipaddr):
    p = pings.Ping()
    res = p.ping(ipaddr) 
    if res.is_reached():
        return True
    else:
        return False

if __name__ == '__main__':
    ipaddr = "対象のIPアドレス"
    ngcount = 0

    while True:
        if send_ping(ipaddr):
            ngcount = 0
            print(datetime.datetime.now(),"ping OK")
        else:
            ngcount += 1
            print(datetime.datetime.now(),"ping NG",ngcount)
            if ngcount >= 5:
                 line("ping失敗。送信先({})機器を確認してください。".format(ipaddr))
                 break

        time.sleep(5)

つまづいたところ

pingsライブラリをインポートしてpingを送信しますが、プログラム実行はsudoコマンドでスーパーユーザ権限を持って実行しないとpingが通りませんでした。Linuxチョットワカラナイ

感想

簡単なpingのプログラムで死活監視をやってみました。死活監視はいろいろな方法があるのでやってみたいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0