ヤマハルーターのLuaスクリプト

Luaスクリプトについて

ヤマハルーターで使うLuaスクリプトで基本的で特徴的な仕様をまとめてみました。PHPなど他のプログラミング言語を使ったある方ならとっつきやすいです。

  • 関数の戻り値

    戻り値を複数とることができるので便利です

    function test()
        return "aaa", "bbb"
    end
    -- test関数を実行(a変数には"aaa", b変数には"bbb")
    a, b = test()
  • 文字列の連結

    文字列の連結には..を使います。

    -- aaabbbと出力されます
    print("aaa" .. "bbb")
  • コメント

    --を使うことでそれ以降をコメントにできます(Javaなどの//)。複数行の場合は--[[]]で囲みます(Javaなどの/**/)。

    print("あいうえお") -- "あいうえお"を出力します(コメント)
    
    --[[ 複数行行コメント
      "かきくけこ" を出力します
    ]]
    function test2()
        print("かきくけこ")
    end
    

ヤマハルーターのコマンド

ヤマハルーターでLuaスクリプトに関連しそうなルーターコマンドをまとめてみました。

  • Luaスクリプトを実行する…その1

    コマンドに直接Luaスクリプトを記述して実行するには、lua -eコマンドを使います。Luaスクリプトを簡単に試すことができます。

    #lua -e 'print("abcde")'
  • Luaスクリプトを実行する…その2

    コマンドに複数のLuaスクリプトを記述して実行します。半角スペースで区切るとことで、複数のLuaコマンドを実行することができます。

    #lua -e 'msg="abcde" print(msg)'
  • Luaスクリプトを実行する…その3

    Luaスクリプトファイルを指定して実行するには、luaコマンドを使います。引数にLuaスクリプトファイルを指定します。次の例ではルーター直下に保存されているddns_update.luaを実行しています。

    #lua /ddns_update.lua
  • ファイルの一覧を表示する

    Luasクリプトファイルを保存している場所などを表示します。ここではルート直下/のファイル一覧を表示しています。

    # show file list /
    2018/06/20 17:24:11            2309 ddns_update.lua
    2018/06/22 18:52:42            2314 ddns_update_2.lua
  • 実行中または実行したLuaスクリプトの一覧を表示する

    show status luaコマンドで、現在実行中のLuaスクリプトや実行した履歴を表示することができます。実行中のLuaスクリプトを停止するにはここで表示されるTask IDが必要になります。

    # show status lua
    Lua Library Version:            Lua 5.1.5
    Lua Script Function Version:    1.07
    
    [running]
    Lua Task ID (State): 1  (SLEEP)
    Running Trigger:     executed by 'lua' command
    Command Line:        lua /ddns_update.lua
    Script File:         /ddns_update.lua
    Starting Date:       2018/06/20 17:24:23
    Elapsed Time:        2 hours 12 minutes 21 seconds
    
    [history]
    (1)
    Running Trigger:     executed by scheduled 'lua' command
    Command Line:        lua ddns_update.lua
    Script File:         /ddns_update.lua
    Running Counts:      1
    Error Counts:        0
    First Starting Date: 2018/06/20 17:47:26
    Last Starting Date:  2018/06/20 17:47:26
    Last Ending Date:    2018/06/20 17:47:26
    Last Result:         success
  • 実行中のLuaスクリプトを停止します

    terminate luaコマンドを使います。引数には停止したいタスクIDを指定します。次の例ではタスクID=1のLuaスクリプトを停止させています。

    # terminate lua 1
  • ファイルを削除する

    deleteコマンドを使います。引数には削除するファイル名を指定します。次の例ではルーター直下に保存されているddns_update.luaファイルを削除しています。

    # delete /ddns_update.lua
  • ファイルの名前を変更する

    renameコマンドを使います。第一引数には変更前のファイル名を、第二引数には変更後のファイル名を指定します。次の例ではルーター直下に保存されているddns_update.luaファイルを、ddns_update2.luaにファイル名を変更しています。

    # delete /ddns_update.lua

Luaファイルをルーターにアップロード

Luaスクリプトファイルをルーターで使うには、Luaスクリプトーファイルをルーターにアップロードする必要があります。方法はいくつかありますが、ここではTFTPを使った方法を説明しています。

  • macOSの場合(TFTPを使用)

    Luaスクリプトファイルをアップロードします。次の例では自端末にあるlua-script-local.luaというLuaスクリプトファイルを、ルーター(IPアドレスは192.168.0.1)にlua-script.luaという名前でアップロードしています。またルーターのAdministratorのパスワードはpasswordと設定されているものとします。

    $ tftp 192.168.0.1
    tftp> put lua-script-local.lua /lua-script.lua/password 
    tftp> quit
  • Windowsの場合(TFTPを使用)

    Luaスクリプトファイルをアップロードします。次の例では自端末にあるlua-script-local.luaというLuaスクリプトファイルを、ルーター(IPアドレスは192.168.0.1)にlua-script.luaという名前でアップロードしています。またルーターのAdministratorのパスワードはpasswordと設定されているものとします。

    > tftp 192.168.0.1 put lua-script-local.lua /lua-script.lua/password