このブログ、丁度1年前の2月にサーバーを引っ越して、新興サーバーだったこともあり安定性が不安あったので、「ブログチェックして落ちたらメールで通知する」プログラム作成させて今も動かしてます。
プログラムを動かしてる環境は、ローカルにあるRaspberryPiで1分毎に実行して、落ちた時間にメールで通知をして、さらに復活した時間にもメールを通知させてます。
昨日の朝に20分ぐらいブログが落ちてたみたいで、作ったプログラムが正常に動いてるのを久しぶりに確認できました。
プログラム書けるレベルには程遠いので、細かくサンプルから一つ一つ動かして確認しながら作成していたプログラムなので、ちょっとその作業過程の話でもしていきます。
ブログ落ちたらメールで通知するプログラムの仕組み
ブログ落ちたらメールで通知するプログラムで、HTTPステータスコードを取得して「200」以外は落ちたとみなしてメールで通知するようにしてます。また、再接続が出来たら再開のメールも通知してます(メール通知と同時に日時とステータスコードをcsvファイルもに書き込んでます)。
そのプログラムを1分置きに動かしてブログのチェックしてます。
プログラム作成は一つ一つ確認しての組み合わせ
このプログラムPythonで作ってるわけですが、ブログチェックのプログラム作るまでPythonを使ったことが無く初めてだったので、ネットで調べながら作ってました。
それで、一気に書かずに小さいことから一つ一つ確認しながら(HelloWorldも)書いてましたね。
ブログのステータスコードを取得
簡単そうだったので最初に取り掛かりました。ブログに接続してステータスコードを表示させてるだけです。
表示するにも、「ステータスコード表示する」から「変数に入れて表示」やif文でステータスコードごとに違うメッセージ表示させるなど、小さいことも確認しながらやってました。
メールを送信するプログラム
メール通知が目的だったんでね、次に適当にコードに書いたメッセージをメールで送信するプログラムを作りました。ただ、ちょっと文字コード関係が面倒くさかったです(文字コード変換は苦手)。
メールも同様、メール本文に入れるメッセージは「テキスト」から「変数に入れたテキスト」の順です。
ステータスコード取得とメール送信プログラムを組み合わせる
作成したステータスコード取得プログラムとメール送信プログラムを組み合わせて、if文でステータスコード「200」以外になるとメールを送信するようにしました。
細かい部分を書くと、ローカルのネット接続のトラブルかも判断するためにGoogleのステータスコードもチェックして「Google=正常、ブログ=異常」の時のみメールで通知するようにしてますが、ざっくり説明するとこんな感じです。
あとがき「プログラム書けないのでやりたいこと一つ一つ確認して組み合わせ」
プログラムはif文ぐらいしか使えないんでね、構造体とか何それって感じで、ネットで既存のソースをコピってるレベルですが、今回の「ブログ落ちたらメールで通知する」プログラムの場合(csv作成プログラムは省略)。
- ステータスコードを取得
- メールを送信
- 上記2つを組み合わせ
って感じでやりたいこと整理して一つ一つ確認しながら作ってました。
って感じで1つ1つ作ってました。いきなり、ステータスコード取得してそのステータスコードをメールで送信するプログラムとか作ろうとすると失敗するし、何処が原因かの特定も難しいしね。
プログラム作るときは一気に作らず一つ一つ