【ヤマハルーター】Luaスクリプトの基本メモ(コンソールでのテストからサーバーへのPOSTまで)

ネットワーク

ヤマハルーターでのLuaスクリプトの扱いについて、基本事項をまとめておきます。

スポンサーリンク

コンソールでLuaスクリプトを動かしてみる

ヤマハルーターでコンソールからLuaスクリプトを実行するには、lua -eコマンドを使用します。

lua -e 'print(123)'

スクリプトの実行には管理ユーザーとしてルーターにログインしておく必要があります。

また、コンソールから直接実行する場合、スクリプトは改行せず、1行にしておく必要があります。コピペして流し込む前に改行をなくしておく必要があるので、注意してください。

スポンサーリンク

コンソールコマンドの実行

ヤマハルーターのコマンドを実行するには、rt.commandを使用します。

rtn, env = rt.command("show environment")

第1引数には実行結果(成功したらtrue)、第2引数には標準出力(コマンドの出力)が格納されます。管理ユーザーとして実行されますので、十分内容を確認してから実行してください。

WebサイトやAPIへPOSTするには?

WebサイトやAPIへのPOSTには、ヤマハルーター独自APIであるrt.httprequestを使用します。

ヤマハルーター専用 API

例えば、http://test.lc/rtxlogger/api.phpにPOSTする場合は、以下のようなコードとなります。

-- POSTデータ作成
req_t = {
    url = "http://test.lc/rtxlogger/api.php",//URL
    method = "POST",
    content_type = "application/x-www-form-urlencoded;charset=sjis"
}
req_t.post_text =
    string.format(
    "key1=%s&key2=%s",
    "hoge",
    "fuga"
)

注意点としては、

  • 文字コードがShiftJISになること
  • エンコードは自分で行うこと

などがあげられます。

まず、送信される際の文字コードはUTF-8ではなく、ShiftJISになります。日本語を含むデータを送信する際に文字化けの原因となりますので、content_typeに文字コードがShiftJISであることを明記しておくことをおすすめします。

また、POSTするボディは自分でエンコードを行う必要があります。サンプルのようにstring.formatを使用して、content_typeにあったエンコードを行ってください。エンコードした後の形式がわからない場合は、Postmanなどのツールを使用してみるといいかもしれません。

Luaスクリプトを定期実行させる

scheduleコマンドでLuaスクリプトを定期的に実行させることができます。

schedule at 1 01:00 * lua -e 'スクリプト'

この場合は、毎日1:00にスクリプトが実行されます。

RTFSやUSB・SDにあるファイルを指定することもできます。

schedule at 1 01:00 * lua sample.lua

日時指定の形式については、RTProを参照してください。

37.1 スケジュールの設定

コメント

タイトルとURLをコピーしました