見出し画像

グローバルIPアドレスが変更されたらメールで通知してくれるPythonスクリプトの実装

今まで技術的な記事はnoteにも他のブログにも全然書いてこなかったけど(実は技術者なのに)、これからは備忘録として書き残していこうと思います。その第一弾。

* * *

日本は三度目の緊急事態宣言の中迎えたゴールデンウイーク。いかがお過ごしでしょうか。

新型コロナの”おかげ”と言うとヘンですが、日本ではあまり進まなかったリモートワークも、最近はかなり浸透してきましたね。(業種にもよりますが)

会社のパソコンへリモートデスクトップで接続して仕事する人も多いかと思います。リモートデスクトップ接続するときに必要になるのがIPアドレスってやつですが、これが知らない間に変わっちゃうんですよね。

IT系の技術者じゃないので詳しいことは全然わからないんですけど、とにかくこれが変わっちゃうと「さぁリモート接続しよう」と思ってIPアドレス(正確にはグローバルIPアドレス、WAN側のIPアドレスとも呼ぶみたい)を打ち込んだら”接続できません”みたいなメッセージが帰ってきてチーンってなります。

そこで、IPアドレスが変更されたらメールでお知らせしてくれるように設定してみました。1時間毎にIPアドレスを自動でチェックして、もし変更されていたらメールを送ってくれるって感じです。

まぁほぼ人様の作られたものをパクらしてもらっているのですが。でも少しだけ環境が違ったので、その辺を中心に書き残しておきます。

参考にさせてもらった記事

この方(↓)が書かれているPythonスクリプトを丸々使わせてもらっています。ありがたや~

上記記事はanaconda環境ではなかったのでbatファイルの呼び出しの部分だけ自分で改変する必要がありました。その際にはこちらの記事を参考にさせてもらいました↓

利用環境

ちなみに僕の利用環境と利用シーンはこんな感じです。

【利用環境】
リモートアクセスされるPC:Windows10 Pro 64bit、minicondaインストール済(機械学習とかいろいろやるんで)
リモートアクセスするPC:Windows10
【利用シーン】
基本リモートワーカーなんですが、月に何回かは電車で2時間かけて(!)会社に行くのと、出張も月に何日か行ってます。わりと移動多めなので(こんな世の中なのに)、移動中にも仕事したりブログ書いたりできるようにリモートデスクトップ環境を整えてます。

実装

以下、リモートアクセスされる側のPCで作業していきます。そもそもリモートデスクトップ接続を許可しておくとか、前段階の設定が必要なのでそれはググってやってください。(この記事を読まれている方はたぶんその辺は既にご承知のことと思いますので飛ばします)

そして、実装に関しては基本的には前述のQiitaの記事を読んでください。めちゃわかりやすくまとめられています。anaconda (miniconda)入れてる環境とそうでない環境では少し違うところがあるので、その部分だけ以下に書いておきます。

仮想環境をつくる

まずはcondaでenv_ipという名前の仮想環境をつくります。Anaconda Promptを起動して以下のコマンドを入力。

conda create -n env_ip

ちょっと待つと仮想環境ができたっぽいので、作った環境を起動する。

conda activate env_ip

requestsって名前のモジュールが必要らしいのでインストールする。

conda install requests

なお作った仮想環境の諸々のファイルは以下のディレクトリに作成されています。

C:\Users\usename\miniconda3\envs\env_ip

Pythonファイル作成

Pythonスクリプト(中身)はQiitaの記事をそのまま参考にさせていただきました。自分のGmailの情報を別途入手しておいて入力しましょう。コードは前述の参考記事を参照してください。

Pythonファイルは以下のディレクトリに保存。後で作成するbatファイルと同じ場所です。

C:\work\notification_change_ipaddress\notification_change_ipaddress.py

batファイル作成

次にbatファイルをつくります。Pythonスクリプトと同じ場所に置いておきます。

C:\work\notification_change_ipaddress\notification_change_ipaddress.bat

このbatファイルの中身は以下のような感じです。ここが、参考記事で説明されている内容とは少し違うところ。

@echo off

cd C:\work\notification_change_ipaddress
call C:\Users\username\miniconda3\Scripts\activate.bat
call activate env_ip
python notification_change_ipaddress.py

cdなんちゃら…ってところでbatファイルが保存してあるディレクトリに移動し、call ... activate.batでanaconda (miniconda)のbase環境が立ち上がり、次のcall activate env_ipで自分が作った仮想環境を立ち上げます。

その後、python motification_change_ipaddress.py という行でPythonスクリプトを実行しています。

タスクスケジューラの設定

最後に、参考記事に書かれているタスクスケジューラの設定をおこなえば完了!ちゃんと設定できていれば、最初にタスクを実行したときに以下のような本文のメールが来ると思います。

{"globalip": "XX.XXX.XXX.XXX", "localip": ["PC_name", [], ["XXX.XXX.X.X"]]}

この中のglobalipってやつがリモートデスクトップに必要なIPアドレスですね。

先日外出先から自宅のWindows PCへリモートデスクトップ接続しようと思ったらIPアドレスが変わっていて接続できない、どうしよう・・・ってことになって困りました。

でもこれでIPアドレスが変更されたら自動的にお知らせしてくれる(はず)ので、「今日はIPアドレス変わってないかな。。大丈夫かな。。」なんて心配せずに出かけられますね。

おわりに

いろんな方がPythonのスクリプトや設定の手順を公開してくれているおかげで、僕みたいな”ちょっとプログラミングが触れる”レベルの人間はとっても助かります。

でも、自分も少しでも人様のお役に立てるように、ちょっとしたことから発信していきたいなと思っている次第です。


最後まで読んでいただきありがとうございました。

お気持ちだけでも嬉しいです。ありがとうございます!