MENU
カテゴリー
アーカイブ

Python3でアドレス自動通知:ver2

最新版はこちらの記事

次の環境で動作確認済み。

  • Ubuntu 18.04
  • Python 3.6.9
  • wget 1.19.4
  • wc 8.28

今のところieServerで登録しているドメインはテスト用非公開サーバーとMyDNSへのリダイレクトだけ。それでも更新だけはとりあえず定期的に実行している。
で、以前に作ったスクリプトを改良してみた。

ヘボいコードで本当はもっと効率的に書けるのは間違いないだろうけど、とりあえず思った通りに動作するから良しとしよう。

ということで、大したことではないけど次の3つを追加した。

目次

前回更新成功から一定時間を経過したら強制通知する。

これまでは、IPアドレスの状態を確認して変更があれば通知するスクリプトと、定時に強制的に通知するスクリプトの2つをcronで実行していた。
見直したのはタイトルのとおり、保存しているログをチェックして、前回更新に成功してから一定時間を経過していたら強制通知することにした。なので、cronの実行スクリプトは1つだけになった。

ログファイルの肥大化防止

ログに残すのは「更新成功」「更新失敗」「IPアドレス取得失敗」の3種類とした。スクリプトを実行して、このうちどれかをログに書き出すようなときは古いログを1行削除することにして、ログの記録数の上限を設定した。
数百行とかのログを残してもあまり意味が無いけど、例えば10分間隔でチェックしてて、IPアドレスチェックサイトの障害なんかで取得に毎回失敗するようなときは、1日で144回の「IPアドレス取得失敗」のログが残ることになる。
IPアドレスが頻繁に変更することもないし色々無駄なので10~20行程度でも十分かな。

IPアドレス更新チェック

自宅のグローバルIPアドレスを確認するサイトからの受信データにはIPアドレス以外の情報も混じっているから、IPアドレスだけを抽出することにした。これで、IPアドレス確認サイトでもチェックできるから、ieServerのIPアドレス確認画面だけに頼らなくても大丈夫。
どのサイトも長期間にわたってアクセスできなくなるような事態にはならないだろうと勝手に理解して、2つのサイトで照合するようなことはしていない。
ただ、あまりにも頻繁に更新チェックしていると不正アクセスとして締め出されるかもしれないのでご注意を。(この自鯖サイトは無料レンタルサーバーを使ってIPアドレスチェックを実施中。)

ファイルのオープン、読み込み、最初の1行削除、書き出し、ファイルのクローズと、一連の動作が4行で書けるのは少し感動。

IPアドレスを正規表現で抽出する方法が結局判らなかった。次のようなよく見かける表記だと、最後の3桁だけ、上位2桁しかマッチしてくれない・・・。

(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])

コメント

コメントする

目次