この記事はisaaxアドベンドカレンダー2018の16日目の記事です。

isaaxを用いたIoTの開発ではローカル環境でsshでRaspberry Piなどの端末の中に入りソフトウェア開発を行います。ソフトウェア開発が一区切りしたところで、gitのリモートブランチにpushすることでisaaxがソフトウェアを受け取り、リモート端末の中でソフトウェアを常駐化してくれます。

isaaxでデプロイしたソフトウェアの中でUNIXコマンドを叩いている場合や、他のプロセスを呼び出している場合に開発時と本番環境でpathが変わってしまうという問題が時折発生します。

 

そこで今回は”pwd”コマンドと”tree”コマンドを使ってリモート端末の中のファイル構造がどうなっているかをisaaxのコンソール画面で確認するというプログラムを書きました。

プログラムの中では以下の様な順番で処理をしています。

1.new.txtという新しいファイルを生成

2.実行されたタイムスタンプを打刻

3.pwdコマンド実行してプロセスの所在地を確認

4.treeコマンドを実行してプロセスのある階層の構造を取得

下記がtreer.pyの内容です。

import datetime
import time
import subprocess
from time import sleep

cmd1 = "pwd"
cmd2 = "tree"

file = open('new.txt','a')
file.write('new file\n')

while True:
    print(datetime.datetime.now())
    subprocess.call(cmd1)
    subprocess.call(cmd2)
    sleep(10)

次にRaspberry Pi内部でisaaxが実行するファイルを司るisaax.jsonの中身です。

{
  "name": "python-app",
  "version": "Nothing test",
  "author": "Nanami Setoyama",
  "language":"python",
  "license": "",
  "scripts": {
     "start": "python3 -u treer.py"
    }
}

pythonの後に-uオプションをつけないとアンバッファーモードにならないので注意してください。

 

実行結果は以下の様な感じでisaaxのコンソールから確認できます。

簡易的ですが、これでリモート端末の中のファイル構造が確認できるようになりました。

ソースコードはこちらのGitHubで公開しておくので参考にしてみて下さい。


Leave a Reply

Your email address will not be published. Required fields are marked *