Twitterはじめました

こないだのサーバ停止の一件もあり、どうにかサーバをリアルタイム監視できないかと。

頻繁にこのホームページにアクセスするのもめんどくさいし…
というわけで、日常的に眺めているTwitterでサーバを監視するべく
「さんごう研究所bot」なるものを作ってみました。

@SangouLab_botです。
私のサーバの状況を常に知りたいという奇人変人さんがいらっしゃいましたら
フォローしてあげてください。フォロー返し機能は後日実装予定。
いまのところ試験稼働なので無愛想なツイートしかしてませんが
そのうち私好みに変身させます。所詮、私のためのbotですし…(笑”

まあ、このサイトの性質上、bot作成に関しての技術情報は紹介するべきなんだろね。

botの作成にはEasyBotterというものを利用させていただきました。
ソースも丁寧にコメントアウト満載なので読んでいるとphpの理解が深まったりするかも。
設置方法はFFFTPなんかで自サバにうpするだけ。
動作試験中はhttpでアクセスできる場所においてましたが、URLばれて知らずのうちに
連投されてたりとか、機密なパスとか晒しておくのはさすがにまずいので
動作の確認ができたらhttpでアクセスできない場所に移しました。
(httpという単語の使い方を間違えてるかも…)

ここで一度つまづいたのがFFFTPでアップするときに「すべてバイナリモード」でアップしないと
data.txtとかテキストファイルの改行コードが勝手に変換されてしまいました。
クライアント側でちゃんと文字・改行コード揃えてアップするので
今後も常にバイナリモードにしといていいんじゃないかと思いました。

続いてcronの設定。
cronは指定した日付・時刻に仕事をしてくれる、いわばタスクスケジューラですね。
私の環境ではroot権限でないとphpを実行できないので、
まず
$ su –
でrootになってから
# crontab -e
でcronのスケジュールを追加できます。
これでスケジュールをroot権限で実行できます。
crondが起動してるかとか、crontabの記述文法とかの情報は適当にググってください。

ここでも私がつまづいたポイント。
crontabとシェルスクリプトの記述は全部「絶対パス」で書いてあげてください。
“php” じゃなくて “/usr/local/bin/php” で。
shに関してはshで通りましたけど。

ちなみにcrontabには直接phpの起動を記述するのではなくてシェルスクリプトを
呼び出すようにしてあげてください。
EasyBotterの中身が相対パスで書かれているらしく、うまく動作しません。
すなわち、

#!/bin/sh
cd /(EasyBotterを置いた絶対パス)/
/usr/local/bin/php bot.php
exit

という内容のシェルスクリプト、名前は適当にbotcron.shとかにして
適当にEasyBotterと同じディレクトリあたりにでも置いておいて
これをcrontab内に

00 * * * * sh /(EasyBotterの絶対パス)/botcron.sh

と書いて呼んであげてください。
ちなみに上の例では毎時00分にbot.phpを叩く設定です。

ちなみに私のcrontab内は

00 * * * * sh /略/botcron.sh 2>>/略/error.log

としてエラーログを拾うようにしてあります。
これは動作試験のときに役立ちました。
ついでに、2>>の部分を1>>にすれば標準出力をログできます。
欲張りさんは

00 * * * * sh /略/botcron.sh 1>>/略/tweet.log 2>>/略/error.log

としておけばよいでしょう。
ただ、tweet.logの方は「投稿に成功しました!」的な画面を表示させるためのhtmlタグが
ずらずらと記録されるだけなので見ていてもおもしろいものじゃありません。

投稿の内容はいまのところ、試験発報を行うときのお約束「本日は晴天なり」に
{hour}, {minute}, {second}のタグを使って時間を挿入するようにしてます。
いかにも試験発報っぽい、という理由以上にTwitterでは同じ内容のツイートを
連投できない仕様になっているので、なにかし変化を持たせるために
時刻を入れて同一内容の連投にならないようにしています。

他にも、普段は「Webから」と表示されている部分、
EasyBotterの公式サイト通りに設定すれば「EasyBotterから」と表示される部分ですが
これをお好みに変更する方法、私の場合は「さんごう研究所から」となっていますが
設定方法はOAuth認証とかでググってもらえばいろいろ出てきます。
が、多くの人に自分のアプリを利用してもらうための設定のケース説明が多いですね…
「EasyBotter OAuth認証」でググってください。これでばっちり。

そんなこんなで時間がとれずに設置に3日ほどかかりましたが
ここまでくれば、増やすのも何するのも簡単ですね。
まだ試験運用中ですが近日中に本稼働します。
まあ、本稼働したからってそうそう機能が増えるわけでもないんですけどね。

投稿者:

さんごう

さんごう研究所所長。ソーラーカーのドライバー、あと電気エンジニア。そこそこカメラマン。自宅サーバを立てた理由はサイトに広告が表示されるのが嫌だったから。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です