VagrantにSSHログインしたときにアニメ放送情報を表示させる
今日放送のアニメなんだっけ?と仕事中に気になることはよくあるはず。
見逃せないアニメの日は残業せず帰りたい。
そんな感じの需要を満たすかもしれないソリューションです。
SSHログインしたときに何か表示する
motd(message of the day)を使えば可能らしい。サーバにログインしたときに、/etc/motd
の内容がコンソールに出力される。
アニメ放送情報を取得する
拙作Anitimeを使う。
anitimeをインストールする。
# cd ~/ # git clone https://github.com/tmysz/anitime.git # cp ./anitime/anitime /usr/local/bin/ # chmod a+x /usr/local/bin/anitime
anitime
コマンドを実行すると記事冒頭画像のようにずらーっと放送情報が出てくるはず。表示する局の設定とかは、ホームディレクトリの.anitime/config.json
に書けば読み込みます。
SSHログインした時にアニメ放送情報を表示させる
SSHログインしたときに、anitime実行結果をmotdに書き出せば良さそう。とりあえず、anitimeを実行してmotdに書き出すシェルスクリプトを準備する。
今環境のPHP環境がphpenvによるもののため、4行目でrbenvの初期化スクリプト(phpenvはrbenvに依存しているため)を実行しています。yum等で入れたPHPの場合は、anitime実行前にPHPのパスを設定する記述を代わりに入れてください。(yumインストールしたphpは何も書かなくてもこの時点で動く(パス通ってる)っぽい?)
#!/bin/sh # phpenv init source /etc/profile.d/rbenv.sh echo -e "======\n`/usr/local/bin/anitime`\n======\n" > /etc/motd
試行錯誤
/etc/ssh/sshrc
でupdate_motd.shを実行させようとした
SSHログイン時に/etc/ssh/sshrc
が実行されるようなので、この中でupdate_motd.shを実行させてみた。
結果としては、/etc/ssh/sshrc
が実行される前にmotdが出力されてしまうためボツ。
cronでupdate_motd.shを実行させようとした
crontabでは、分・時・日・月・週以外にも、@rebootと指定することでサーバ起動時のタスクを登録することが出来る。
vagrant up
したときにmotdに書き込んでくれれば良いので、/etc/crontab
に以下のようにタスクを登録した。
@reboot root /etc/update_motd.sh 10 * * * * root /etc/update_motd.sh
サーバ起動時に加えて毎時10分にmotdを書き換えている。 こっちはうまくいった。
職場の開発環境に入れれば捗るかもしれない。