研究室に誰がいるかをslackから確認するシステムを作った
作ったもの
研究室に今誰がいるかをslack上から相手に気づかれることなくコマンドで確認するシステムを作った。😝 pic.twitter.com/bCF50OaxJU
— 又 (@matatsuna) 2017年4月14日
概要
- slackのスラッシュコマンドでデータベースから最新の情報を取ってきて返す。
技術的なこと
raspberry pi 側
10分間に1回プログラムを実行する
cronを使いました。
クーロン(cron)をさわってみるお - Qiita
arpコマンドでMacアドレスを取得する
まず、Macアドレスは端末が必ず持っていてほぼユニークなアドレスで同じネットワーク内の端末からは、ipアドレスと一緒に知ることができます。Wifiにつながってる状態であれば、ロック画面やスリープに入ったとしても知ることができます。arpテーブルというipアドレスとMacアドレスの一覧の表が存在しarpコマンドで参照します。
$ arp
ただ、リアルタイムでarpテーブルを更新するためには、pingを飛ばす必要があります。
$ sudo ping -c 1 -W 1 192.168.xxx.xxx $ arp -a 192.168.xxx.xxx
これを10分に1回100ipほどに行い、同じネットワーク内にある端末のMacアドレスを取得します。
ネットワークに負荷がかかるので、本当はこんなことしたくない....
slack 側
スラッシュコマンドを作る
これじつは作れます。https://ほげふが.slack.com/apps/manage/custom-integrations
しかも仕組みは簡単で、
/コマンド名 引数
この引数をそのままテキストでGETかPOSTを好きなアドレスに対して送ることができます。httpのサイトへも可能です。jsonで返してあげると結果をslackに投稿してくれます。
Slash Commands | Slack
データベースの最新情報を返すだけのphpにスラッシュコマンドからリクエストを送るようにしました。
まとめ
研究室にいることをわざわざカードをかざしたり、カメラを設置して監視するのは、なんか嫌だなーって思っていて、普段通りの生活を送ってる中でなにかトラックングできないか考えたらこの方法を思いつきました。さり気なく監視してる感が余計に怖いですが。
10分間に1回ごとの情報がデータベースに貯まるので、研究室に来てない人がわかったりするので、M1,B4の先輩たちからすごく嫌がられましたw