YAMAHAルータでluaスクリプトを用いて、通信の確認と再起動を行う(接続性を確保するスクリプト)

最近のYAMAHAのルータはluaスクリプトが標準装備され、簡易プログラミングができます。

ここでは死活監視のスクリプトを作成・転送してみます。(参考にさせていただきました)

死活監視スクリプト(/ping_restart.lua)

ping 8.8.8.8実行。規定のロス率以上で再起動実施。

rtn, str = rt.command(“ping -c 10 8.8.8.8”)
if (rtn) and (str) then
   loss = string.match(str, “(%d+)%.%d+%%”) 
   if (loss ~= nil) then
      loss = tonumber(loss) 
      if (loss >= 30) then
         rt.command(“restart”)
      end
   end
end

作成したスクリプトをtftpでルータに転送する。test.lua

YAMAHAルータでの設定
# tftp host any

linux端末から転送

$ tftp 192.168.0.1
tftp>
tftp> put ping_restart.lua /ping_restart.lua
Sent 966 bytes in 0.3 second
stftp> quit

show file list /
2015/05/29 10:15:47             966 ping_restart.lua


# 追記 atftpを利用すると、一行で実行できます。
atftp 192.168.0.1 -p -r /ping_restart.lua -l ./ping_restart.lua

毎時0分に実行する

schedule at 1 */* *:00 * lua /ping_restart.lua

スクリプトの実行状況を確認する

$ show status lua
Lua Library Version:            Lua 5.1.5
Lua Script Function Version:    1.06

[running]
There is no running script.

[history]
(1)
Running Trigger:     executed by scheduled 'lua' command
Command Line:        lua /ping_restart.lua
Script File:         /ping_restart.lua
Running Counts:      61
Error Counts:        0
First Starting Date: 2023/09/13 09:40:00
Last Starting Date:  2023/09/13 19:40:00
Last Ending Date:    2023/09/13 19:40:10
Last Result:         success

参考:

# 現在の実行状況を表示
show status lua

ROUTER> show status lua
Lua Library Version:            Lua 5.1.5
Lua Script Function Version:    1.06

[running]
Lua Task ID (State): 1  (WATCH)
Running Trigger:     executed by scheduled 'lua' command
Command Line:        lua /sample.lua
Script File:         /sample.lua
Watch Pattern:       "Connected"
Starting Date:       2023/10/19 20:00:39
Elapsed Time:        1 day 12 hours 31 minutes 20 seconds

# スクリプトの停止 terminate lua (Lua Task ID)
terminate lua 1

参考にさせていただきました。有用な情報をありがとうございます。

#YAMAHA

#RTX830

#SIM