123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/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
|