2014年4月26日

【Linux】ターミナルから操作できるTwitterクライアント「bti」【bash】

サーバ監視をする上で、障害や侵入検知時の通知方法をどうしようかということになりまして、普通にメールとかでもいいけどせっかくだから変わった方法がいいかなぁ。なんて思ったわけです。

で、ちらほら話題に上がることがあるTwitter。
たしかにこれならログ垂れ流しておけばいいし、プライオリティによってリプライでの通知 or DMでの通知など分けられるし便利そうです。

#まぁ、サーバのログをクラウドサービスに預けるってどうなの?って疑問もなくはないですが、今回は自サーバーで私的にしていることなので、大目に見ることにします。

で、今回はコマンドラインで使えるTwitterクライアント「bti」を導入してみた。という話。

なぜbtiかというと、yumに入っていたからというのと、昨今ありがちなPythonやRubyで書かれたクライアントではなく、bashで動作するもだから。というところ。
別にbashに拘る必要なんて無いような気もしますが。。。

ちなみにbtiとは、Bash Twitter Idiocyの略だそうで。



■インストール

とりあえずyumに入っているので、そのまま入れる。

# yum -y install bti

これだけ



■OAuth認証


btiを起動する前に設定ファイルを作成する

$ vi ~/.bti

下記を記載する

--------------ここから------------------
# Consumer key
consumer_key=cZy8DdioswAfu3LJYg6E2w

# Consumer secret
consumer_secret=fnIGGU0T12mMWKjmThUdSeKN32NLWfmnwapwubVQ
--------------ここまで------------------

btiを起動する

$ bti

URLが表示されるので、アクセスしてPINコードを取得
→ターミナル上にPINコードを入力するよう促してきているので、入力してEnter

access_token_keyとaccess_secret_keyが表示されるので、その2行を上記~/.btiファイルに書き込むと、認証完了。



■コマンドの使い方例


・とりあえずツイートする


$ bti
Tweet: Hello World

↑これでTLに「Hello World」が投稿される

updateオプションつけても挙動は同じ

$bti --action update


・特定のTLを表示する


フォロワーのTLを出力する
$ bti --action friends

自分宛てのリプライを表示する
$ bti --action replies

特定のユーザーに絞りたい場合
$ bti --action replies --user [userid]

--action publicってオプションもあったのだけど、結局どんなのだかよくわからなんだ。


・パイプorリダイレクションから投稿できる


パイプからツイート
$ echo "Hello Pipe World" | bti

一旦ファイルに出力した文字列をリダイレクトしてツイート
$ echo "Hello Redirection World" > tweet
$ bti < tweet

※以降のコマンド活用例ではすべてパイプを使っているけど、パイプ使わずにももちろんできます。

・リプライを送る/リツイートする


とりあえずリプライするだけなら普通に@useridつければ問題なし。
$ echo "@wd_shiroma Reply test" | bti

特定のツイートに紐付いたリプライを返したい
$ echo "@wd_shiroma Reply test 2" | bti --replyto 123456789012345678

リツイートのやり方も同じ……はずなんだけど何故かリツイートしてくれない?
$ bti --retweet 123456789012345678

・DMを送る

$ echo "This is DM." | bti --action direct --user [userid]


その他、短縮URLを展開して表示、ログの表示/ファイル出力、プロンプトを合わせて表示する機能などあるけれど、全部紹介していたらきりがないので、manページを見ることにしましょう。基本的な使い方は上記を見ればわかるだろうし。


とりあえず今回はこんなかんじで、あとはsyslog捉えるなり統合監視ツールからコマンド投げるなりして設定していけばいいんじゃないかなぁ。なんて思っています。

次回があるのかどうかわからないけど、お楽しm