40 lines
1.1 KiB
Lua
Executable File
40 lines
1.1 KiB
Lua
Executable File
#!/usr/bin/lua
|
|
-- Copyright (C) 2022 Tianling Shen <cnsztl@immortalwrt.org>
|
|
|
|
local util = require "luci.util"
|
|
local jsonc = require "luci.jsonc"
|
|
|
|
local eth_info = {}
|
|
local ifname, stat
|
|
for ifname, stat in pairs(util.ubus("network.device", "status")) do
|
|
if ifname:match("^(eth%d+)$") == ifname then
|
|
local status, speed, duplex
|
|
|
|
status = stat.carrier and "yes" or "no"
|
|
|
|
if stat.speed == nil or stat.speed:sub(1, 1) == "-" then
|
|
speed = "-"
|
|
else
|
|
speed = stat.speed:sub(1, -2) .. "Mb/s"
|
|
end
|
|
|
|
if not stat.carrier then
|
|
duplex = "-"
|
|
elseif stat.speed:sub(-1) == "F" then
|
|
duplex = "Full"
|
|
else
|
|
duplex = "Half"
|
|
end
|
|
|
|
eth_info[#eth_info+1] = { name = ifname, status = status,
|
|
speed = speed, duplex = duplex }
|
|
end
|
|
end
|
|
|
|
table.sort(eth_info,
|
|
function(a, b)
|
|
return a.name < b.name
|
|
end)
|
|
|
|
print(jsonc.stringify(eth_info))
|