luci 获取ifaces信息模块

本文详细介绍了如何在Luci中获取网络接口(ifaces)信息,适用于LEDE和OpenWrt等基于OpenWrt的路由器系统。通过阅读,你将了解到如何使用Luci接口来收集和管理网络设备的接口信息,这对于网络配置和监控至关重要。
module("luci.controller.pubapi.ifacestatus", package.seeall)

function index()
    --entry({"click", "here", "now"}, call("iface_status_ip"), nil)
    entry({"ifacewanip"}, call("iface_wan_ip"), "iface wan ip", 10).dependent=false
end
 
function iface_wan_ip()
        local netm = require "luci.model.network".init()
        local rv   = { }
        local ifaces= "wan"

        local iface
        for iface in ifaces:gmatch("[%w%.%-_]+") do
                local net = netm:get_network(iface)
                local device = net and net:get_interface()
                if device then
                        local data = {
                                id         = iface,
                                desc       = net:get_i18n(),
                                proto      = net:proto(),
                                uptime     = net:uptime(),
                                gwaddr     = net:gwaddr(),
                                ipaddrs    = net:ipaddrs(),
                                ip6addrs   = net:ip6addrs(),
                                dnsaddrs   = net:dnsaddrs(),
                                ip6prefix  = net:ip6prefix(),
                                errors     = net:errors(),
                                name       = device:shortname(),
                                type       = device:type(),
                                typename   = device:get_type_i18n(),
                                ifname     = device:name(),
                                macaddr    = device:mac(),
                                is_up      = net:is_up() and device:is_up(),
                                is_alias   = net:is_alias(),

                                subdevices = { }
                        }

                        for _, device in ipairs(net:get_interfaces() or {}) do
                                data.subdevices[#data.subdevices+1] = {
                                        name       = device:shortname(),
                                        type       = device:type(),
                                        typename   = device:get_type_i18n(),
                                        ifname     = device:name(),
                                        macaddr    = device:mac(),
                                        is_up      = device:is_up(),
                                }
                        end

                        rv[#rv+1] = data

                end
        end

        if #rv > 0 then
                local ifaceip = string.match(rv[1].ipaddrs[1],"%d+\.%d+\.%d+\.%d+")
                luci.http.prepare_content("text/plain;charset=UTF-8")
                luci.http.write(ifaceip)
                return
        end

        luci.http.write("127.0.0.1")

end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值