LoginSignup
2
0

More than 3 years have passed since last update.

enebularのファイル機能を使って対象ホストにC言語コードをデプロイして動作させてみた

Posted at

今回やったこと

enebularFlows機能ではなくFiles機能(利用するには有料プランの契約が必要です)を使用してデプロイ先のホストでプログラムを実行させてみました。

確認したこと

C言語ファイルのデプロイ時に、デプロイ先でコンパイルを実行して生成された実行ファイルが実行できることを確認しました。

デプロイ先のホスト環境

プログラム内容

実行時にテキストファイルに文字列を追加する簡単なプログラムとしました。

  • プログラムコードファイル main.c
  • プログラムをコンパイルして実行するスクリプトファイル main.sh

コード

main.c
#include <stdio.h>

int main(void)
{
    FILE * fp;

    fp = fopen( "./test.txt" , "a" );
    if( fp == NULL ) {
        printf( "file open error\n" );
        return -1;
    }

    fputs("-----+\n" , fp );

    fclose(fp);
    return 0;
}
main.sh
gcc -o main main.c ; ./main

確認手順

あらかじめ、main.shファイルをデプロイしておくことにより、main.cファイルをデプロイすると同時にコンパイルして実行することが可能になります。

1. main.shファイルをデプロイします

main.sh

2. main.cファイルをデプロイします

「Stage」を「Post-Deploy」に設定することにより、main.cファイルデプロイ後に「Assets Path」に指定しているファイルを実行します。ここではmain.shを指定しています。

main.c

3. 実行ファイルが生成されているか確認します

デプロイ先のフォルダ「/home/enebular/enebular-runtime-agent/ports/awsiot/assets」を確認してmainファイルとが存在していることを確認します。

[root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# ls -l
total 24
-rwxr-xr-x 1 enebular enebular 8792 Dec  5 06:28 main
-rw-r----- 1 enebular enebular  239 Dec  5 06:28 main.c
-rwxr----- 1 enebular enebular   28 Dec  5 06:27 main.sh
-rw-r--r-- 1 enebular enebular    7 Dec  5 06:28 test.txt
[root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets#

4.プログラムが実行されているか確認します

デプロイ先のフォルダ「/home/enebular/enebular-runtime-agent/ports/awsiot/assets」を確認してtest.txtファイルとが存在していることを確認して、さらにそのtest.txtファイルの内容が「-----+」となっていることを確認します。

[root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# ls -l
total 24
-rwxr-xr-x 1 enebular enebular 8792 Dec  5 06:28 main
-rw-r----- 1 enebular enebular  239 Dec  5 06:28 main.c
-rwxr----- 1 enebular enebular   28 Dec  5 06:27 main.sh
-rw-r--r-- 1 enebular enebular    7 Dec  5 06:28 test.txt
[root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# cat test.txt 
-----+
root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# 

まとめ(感想)

  • 今回はC言語を使いましたが、ホスト上で動作する言語であれば実行可能のはずなので他の言語でも試してみたいと思います
  • Node-REDのフローでは実現できない、または困難なケースに対しては今回の方法で実現できるかもしれないと思いました
  • ホストが遠隔地にありコード修正できないものや複数ホストへの対応ができそうなので利用できるケースは多いかと思いました
  • rootユーザー権限での設定やホスト再起動等については確認していませんが、作り込むことはできると思うので今後試してみたいと思います
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0