ヤマハルーターでの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を使用します。
例えば、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を参照してください。
コメント