Macとラズパイで同じPythonやNodeJSが動くからとMac上でコード書いてデバッグして(納品前日とかに)いざラズパイで動かそうとすると全然挙動が違って焦る。iPhoneアプリ開発とかでもそうだけど、実機デバッグは基本。
RaspberryPi上でコーディングしようとするとGPIOをショートさせてクラッシュしたり電源の能力不足で落ちたりなど非常に辛くて人生が終わってしまうのでMacでコードを書いてscpなりでRaspberryPiに転送して実行するのが普通だと思いますが、rsyncを使うといろいろと捗ります。
- IPアドレスをコマンドライン引数から読み込むようにします
- IPアドレスとか電源いれるたびに変わるので ssh option でHostKeyのチェックをスキップします
- ラズパイが応答しなければ3秒で切断します
-
.git
とかnode_modules
とか一緒に送りたくないものは--execlude
に指定します - リモートのディレクトリは、
~/sugos-tutorial-01
が指定されています
以下をupload.sh
としてソースコードのあるディレクトリにおいておきます。
chmod +x upload.sh
を忘れずに。
#!/bin/bash
TARGET_IP_ADDR=$1
SSH_OPTIONS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=1 -o ServerAliveCountMax=3"
rsync -av -e "ssh ${SSH_OPTIONS}" --exclude 'node_modules' ./ pi@${TARGET_IP_ADDR}:sugos-tutorial-01
使い方
ラズパイのIPアドレスを192.168.1.47
とします。
./upload.sh 192.168.1.47