#!/usr/bin/lua -- Copyright (C) 2022 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 while true do if (ifname:match("^(br-.+)$")) == ifname then break else local status, speed, duplex if(stat.speed ~= nil) then status = stat.carrier and 1 or 0 if stat.speed:sub(1, 1) == "-" then speed = " - " else speed = stat.speed:sub(1, -2) .. "Mb/s" end if stat.carrier and stat.speed:sub(-1) == "F" then duplex = 1 else duplex = 0 end eth_info[#eth_info+1] = { name = ifname, status = status, speed = speed, duplex = duplex } end break end end end table.sort(eth_info, function(a, b) return a.name < b.name end) print(jsonc.stringify(eth_info))