Slack経由でRaspberryPiにC/C++のソースをビルドさせる
1. はじめに
どうもISAOXです。
今回もSlack経由でRaspberryPiに何かやらせるシリーズです。
以下の投稿記事でSlack上でBOTに命令を出せば遠隔のRaspberryPi(以下RPi)のスクリプトを実行できるようになりました。
この記事の環境もこれをベースにしてます。参考下さい。
今回は遠隔のRPiにC/C++のソースをビルドしてもらいます。
PC上でRPi向けのソースコードを修正し、ちょっとコンパイルが通るか確認したいことがあります。
これができれば、RPiに直接接続しなくてもRPi上でコンパイルが通るくらいは確認できます。
出先などRPiと離れた所にいてもSlackさえ使えればコンパイルができるわけです。
2. 前提条件
この記事の前提条件は以下です。
- インターネットに接続したRaspberryPi(Raspbian)がある。
- RPi上でHUBOTを起動できる環境にしている
- Slackを利用している + Slack上でHUBOT用のBOTを追加している。
3. RPiにC/C++のソースをビルドさせる道具の準備
RPi上でC/C++のソースをビルドさせるのはMakefileを使う前提とします。
Makefileがあるディレクトリでコマンドmakeを実行してビルドします。
make
なので、Makefileがあるディレクトリに移動してmakeを実行するShellスクリプトを用意してRPi上に配置します。
第1引き数にMakefileがあるディレクトリパスを指定する仕様です。
#!/bin/sh
cd $1
make clean
make
4. RPi上のHUBOTがShellスクリプトを呼ぶ準備
RPi上のHUBOTが読み込むcoffeeスクリプトに『make』という文字列が来たら上記Shellスクリプトを呼び出す命令を追記します。
追記したらRPiを再起動するなどしてHUBOTが最新のcoffeeスクリプトを読み込んでおくようにしておきましょう。
robot.respond /make (.*)/i, (msg) ->
target = msg.match[1]
@exec = require('child_process').exec
command = "sudo -u pi sh /home/pi/GitHub/StudyRPi/Hubot/iotbot/my_exec/make_bin.sh #{target}"
msg.send "Command: #{command}"
@exec command, (error, stdout, stderr) ->
msg.send error if error?
msg.send stdout if stdout?
msg.send stderr if stderr?
5. Slack上のBOTにC/C++のソースをビルドしてもらうように命令する
Slack上でBOTに以下のようにしてC/C++のソースをビルドしてもらうように命令します。
するとBOTが反応しRPiのShellスクリプトを実行してくれました!
※上のスクリーンショットはSlack上の『DIRECT MESSAGES』上で入力しているので頭に指定するBOT名は省略してます。