#!/usr/bin/lua local function get_basic_net_info(network, iface, accumulator) local net = network:get_network(iface) local device = net and net:get_interface() if device then accumulator["uptime"] = net:uptime() accumulator["iface"] = device:name() accumulator["mac"] = device:mac() accumulator["rx_bytes"] = device:rx_bytes() accumulator["tx_bytes"] = device:tx_bytes() accumulator["ipaddrs"] = {} for _, ipaddr in ipairs(device:ipaddrs()) do accumulator.ipaddrs[#accumulator.ipaddrs + 1] = { addr = ipaddr:host():string(), netmask = ipaddr:mask():string() } end end end local function get_wifi_info(network, iface, accumulator) local net = network:get_wifinet(iface) if net then local dev = net:get_device() if dev then accumulator["mode"] = net:active_mode() accumulator["ssid"] = net:active_ssid() accumulator["encryption"] = net:active_encryption() accumulator["quality"] = net:signal_percent() end end end local function collect_wifi_info() local network = require"luci.model.network".init() local accumulator = {} get_basic_net_info(network, "lan", accumulator) get_wifi_info(network, "wlan0", accumulator) return accumulator end local info = collect_wifi_info() print("Current WiFi configuration") if info.ssid then print("SSID: " .. info.ssid) end if info.mode then print("Mode: " .. info.mode) end if info.quality then print("Signal: " .. info.quality .. "%") end if info.encryption then print("Encryption method: " .. info.encryption) end if info.iface then print("Interface name: " .. info.iface) end if info.uptime then print("Active for: " .. math.floor(info.uptime / 60) .. " minutes") end if #info.ipaddrs > 0 then print("IP address: " .. info.ipaddrs[1].addr .. "/" .. info.ipaddrs[1].netmask) end if info.mac then print("MAC address: " .. info.mac) end if info.rx_bytes and info.tx_bytes then print("RX/TX: " .. math.floor(info.rx_bytes / 1024) .. "/" .. math.floor(info.tx_bytes / 1024) .. " KBs") end