TwitterのDMでSSHもどき
この記事は、Aizu Advent Calendarの10日目として書かれました。
昨日 @MiZuKi_Sonoko:
研究補助業務出役確認表の一部を自動生成した話 - ( mizuki | memo )
明日 @TobiasGSmollett:
はじめに
マシンの遠隔操作はしたいけどセキュリティとか無知すぎるので、こういうことは専門でやっている人に任せたいと思った。
そこで、TwitterのDM機能から文字数制限がなくなったって話を思い出した。
どんなに長い実行結果もDM打って返してもらえばいいじゃないか。
ということでDMでコマンド打って結果を返してくれるものを作ってみた。
Secure SHellってなんですか??分かりません。
やりたいこと
自分のTwitterアカウントから、目的の端末上で動いているTwitterのbotにコマンドを送って、実行結果をDMで返してほしい。
そこで、以下の事を実装するときに考える必要があると思った。
送ったコマンドがちゃんとコマンドになっているか。
ls |
みたいなコマンドも実行されちゃわないか。
やったこと
送ったコマンドがちゃんとコマンドになっているか。
syntax error だったら怒ってくれる
逆引きRuby - 例外存在しないコマンド受け取った時どうするか
Rubyで外部コマンドを実行して結果を受け取る方法あれこれ - Qiita
capture3を使った。
o, e, s = Open3.capture3(command)
rubyの誰かが作ったメソッドでcd出来るか。
できなかったのでpwdして取ってきたパスを使ってどうのこうのした。
DMの受信は出来るのか、DMの送信はできるのか。
コード
catとかできてなかったのでちょっと変えたんだけど長期規制中なせいか確認できてないんだ…
cd頑張った。
結果
一応出来てる。
まとめと感想
やってみてはじめて知ったのだが、DMにも規制があるらしい。
ちょっとゆっくりめにってことで3秒毎にリクエストを投げてたにもかかわらずすぐに引っかかってびっくりした。
なのでbegin, rescue使って一応プログラムが止まらないようにしてる。
つまりこれ何も役に立たない! 無駄なものを作ってしまった…