--[[ @object-name: diag @object-desc: Diag --]] local utils = require "oui.utils" local rpc = require "oui.rpc" local ubus = require "ubus" local uci = require "uci" local M = {} --[[ @method-type: call @method-name: ping @method-desc: 检测网络 @in string addr 目标地址 @out string ping_result ping的结果 @in-example: {"jsonrpc":"2.0","id":1,"method":"call","params":["","diag","ping",{"addr":"192.168.8.1"}]} @out-example: {"jsonrpc": "2.0", "id": 1, "result": {"ping_result":"string"}} --]] M.ping = function(params) local addr = params.addr local cmd = {"ping", "-c4", addr} local proc = ngx.pipe.spawn(cmd) local str = proc:stdout_read_all() return {ping_result = str} end --[[ @method-type: call @method-name: traceroute @method-desc: 跟踪网络路径 @in string addr 目标地址 @out string trace_result traceroute的结果 @in-example: {"jsonrpc":"2.0","id":1,"method":"call","params":["","diag","traceroute",{"addr":"192.168.8.1"}]} @out-example: {"jsonrpc": "2.0", "id": 1, "result": {"trace_result":"string"}} --]] M.traceroute = function(params) local addr = params.addr local cmd = {"traceroute", "-4", "-q", "1", "-w", "1", "-n", addr} local proc = ngx.pipe.spawn(cmd) local str = proc:stdout_read_all() return {trace_result = str} end return M