Global IPの変更をGmail APIを使って通知する

過去記事

を活かし, 常時起動しているWindowsマシンにGlobal IPを監視させ, 変更があった際にメール通知が来るようにした.

 

Git

Github

 

Requirement

  • OS: Mac, Windows

  • python3

    • datetime
    • requests
    • platform
    • json
    • import pickle
    • import os.path
    • from googleapiclient.discovery import build
    • from google_auth_oauthlib.flow import InstalledAppFlow
    • from google.auth.transport.requests import Request
    • import base64
    • from email.mime.text import MIMEText
    • from apiclient import errors

 

Install Gmail Libraries

 

Tested Environment

  • Mac

    • macOS Big Sur 11.5.2 on M1 MacBook Air 2020
  • Windows

    • Windows 10 pro on Desktop PC

 

Usage

Python単体で使用する場合は下記

 

Code関連

ディレクトリ構成

実行前

 

実行後

 

Codes

main.bat

下記のmain.pyをサイレント実行するためのwindowsバッチファイル

 

main.py

Global IPをチェックし, gmail通知をする全体のcode

2021/10/16 追記

某場所からアクセスした際に, グローバルIPの値が謎の文字列になってしまうことがあったため, グローバルIPの取得先を変更した

 

 

gmailSender.py

Gmailメッセージを送る自作ライブラリ. 詳細は過去記事: Gmail APIを使ってPythonでメール送信する を参照.

 

settings.json

メールの設定, 行き先, 本文など

 

token.pickle

Gmail APIを認証した後のトークン

 

 

手順

Gmail APIを使用可能にする

Gmail APIを使用可能にするには過去記事を参照のこと

 

単発での実行確認

  • 下図のようなファイル構成にし, 実行する

Screen Shot 2021-09-16 at 14.19.46

 

  • GmailにGlobal IP変更のメッセージが届く

Screen Shot 2021-09-16 at 14.20.15

 

定期実行化

Mac

過去記事 Global IPを定期確認する のcronでの定期実行方法を参考に上記のmain.pyを定期実行すればよい

 

Windows

タスクスケジューラを利用する.

毎日1回
  • タスクスケジューラを起動

Screen Shot 2021-09-16 at 14.20.36

 

  • タスクスケジュールライブラリを右クリックし, 新しいフォルダをクリック

Screen Shot 2021-09-16 at 14.20.54

 

  • 新しいフォルダ名を入力し, OKをクリック

Screen Shot 2021-09-16 at 14.21.10

 

  • 右上にある基本タスクの作成をクリック

Screen Shot 2021-09-16 at 14.21.41

 

  • 基本タスクのなめを入力し, 次へをクリック

Screen Shot 2021-09-16 at 14.21.59

 

  • 毎日など自分の好きな周期を選択し次へをクリック

Screen Shot 2021-09-16 at 14.22.17

 

  • 開始時刻を設定し, 次へをクリック

Screen Shot 2021-09-16 at 14.22.36

 

  • プログラムの開始を選択し, 次へをクリック

Screen Shot 2021-09-16 at 14.22.45

 

  • プログラム/スクリプトに上記のmain.batを絶対パスで入力し, 次へをクリック

Screen Shot 2021-09-16 at 14.23.10

 

  • 完了をクリック. これで毎日1回実行されるようになる.

Screen Shot 2021-09-16 at 14.23.18

 

1時間に1回
  • 上記手順で作成した基本タスクを右クリックし, プロパティをクリック

Screen Shot 2021-09-16 at 14.23.26

 

  • トリガータブを選択し, 先程の毎日設定のトリガーを選択した状態で, 編集をクリック

Screen Shot 2021-09-16 at 14.23.36

 

  • 繰り返し間隔を1時間に設定し, 継続時間を無期限に設定し, OKをクリック

Screen Shot 2021-09-16 at 14.24.02

 

  • OKをクリック

Screen Shot 2021-09-16 at 14.24.06

 

  • 時刻になると自動実行される

Screen Shot 2021-09-16 at 14.24.38

 

  • Global IPが変更された場合にはGmail通知が届く

Screen Shot 2021-09-16 at 14.29.42

 

以上.

 

動画