要件としては以下の二つです
- メールを監視したい。 GMailのルールだと限界感があるので、プログラムでゴニョゴニョやりたい。
- 特定条件ならエラーメールを送信したい。
メールはGmailのメールアドレス(一つ)が対象なので、 GmailAPIを叩くPythonでスクリプトを作成します。
作ったスクリプトはサーバー上で一定時間ごとに動かします。
サーバーを用意する
これを買いました。
https://www.amazon.co.jp/gp/product/B07CSN3CLY/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1www.amazon.co.jp
Win10が入ってました(OSなし版もあるみたいです)
が容赦なくUbuntu 18.04.1 LTS
を上書きインストールします。
デュアルブートにしてもいいんですけど、Win10はメインPCとノートPCに既にあるので今回はなしで。
なぜOSなし版を買わなかった・・・(3000円くらい安い、みたいな意見をどこかで見ました)
環境構築
Ubuntuのインストール方法や、SSHの構築方法は省略します。 いろんな記事があるので適用に参考にすればいいと思います。
Python環境構築
Ubuntu 18.04.1 LTS
はPythonが既にインストールされています。
素晴らしいですね。
ただし、Python2系とPython3系が両方入っています。
python
コマンドで実行されるのは、デフォルトは2系です(python --version
で調べられます)
パッケージもPython2系とPython3系で管理が分かれています。
ですので、パッケージインストール時はpip install hoge
かpip3 install hoge
か、
どちらのバージョンに入れるのかを、明示的に指定する必要があります。
実行時も同様にpython hoge.py
かpython3 hoge.py
かどちらで実行するか、
明示的に指定する必要があります。
cron環境+動作設定
cronはスケジュール実行する仕組みです(Windowsでいうタスクスケジューラー) 有名な仕組みなので、色々情報もネット上にありますのでここで詳しく説明はしません。
ただですね、Ubuntu 18.04.1 LTS
の情報が全然なく(パス関連が微妙に違う)、
困りました。
cronログ出力設定
デフォルト設定ではcronの実行ログが出力されず、cronが動いているか分からないので、 ログを出力するようにします。
/etc/rsyslog.d/50-default.conf
下記がコメントアウトされているのでコメントイン
cron.* /var/log/cron.log
スケジュール設定
crontab -e
cron設定用のエディタが開くので、以下のような感じで記述 文法自体は他のサイトを参照してください。
#10分ごとにメールチェックをするバッチを叩きにいく。絶対パスにすること */10 * * * * /home/username/python/mail_checker/start.sh
start.shの中身はこんな感じ。実行日ごとにログファイルを作成し、追記しています。
#!/bin/sh cd `dirname ${0}` date datestr=`date '+%Y%m%d'` echo begin mail checker python3 main.py >> log/${datestr}.log 2>&1 echo end mail checker
GMailAPI を叩くPythonスクリプトです · GitHub
設定後、cronをreload
かrestart
すると、設定スケジュールどおりに実行される。
※どちらが良いかは不明
/etc/init.d/cron restart もしくは /etc/init.d/cron reload
実行されているかは
/etc/init.d/cron status
で確認可能です。
まとめ
サーバー上で一定時間ごとにPythonスクリプトを起動させる準備が整いました。 次回はPythonでGmailAPIを叩き、受信ボックス内のメールを見ていきます