Temat: Nazwy hostów połączonych do wifi na Luci

Czy można z poziomu Luci wyswietlić nazwy hostow podpiętych do wifi?

W sekcji Połączone stacje na stronie Stan jest tylko adres MAC,  a na stronie Sieć Wifi tylko MAC i IP.

Asus TUF-AX4200 | AX3000T | NSA310b | PiHole

2

Odp: Nazwy hostów połączonych do wifi na Luci

Z poziomu sieci chyba nie. Ręcznie możesz skorzystać z /tmp/dhcp.leases żeby poznać ich nazwy.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Nazwy hostów połączonych do wifi na Luci

OpenWrt Barrier Breaker 14.07 / LuCI 0.12 Branch 
    U mnie bez problemów wyświetla nazwy hostów wifi. Ja dodatkowo na stronie wifi przypisałem nazwy i po restarcie wskoczyły zapisane nazwy a nie te, które zostały rozpoznane. Myślę, że zależy to od hostów bo tylko w przypadku telefonu miałem "?" i mac.

4

Odp: Nazwy hostów połączonych do wifi na Luci

edos napisał/a:

OpenWrt Barrier Breaker 14.07 / LuCI 0.12 Branch 
    U mnie bez problemów wyświetla nazwy hostów wifi. Ja dodatkowo na stronie wifi przypisałem nazwy i po restarcie wskoczyły zapisane nazwy a nie te, które zostały rozpoznane. Myślę, że zależy to od hostów bo tylko w przypadku telefonu miałem "?" i mac.

W dzierżawach dhcp też widzę nazwy hostów, ale mi chodzi o połączone stacje wifi. W którym miejscu są widoczne u Ciebie i na jakim ekranie ustatwiasz bo na stronie Wifi nie można tego ustawić.

Asus TUF-AX4200 | AX3000T | NSA310b | PiHole

5

Odp: Nazwy hostów połączonych do wifi na Luci

W połączonych stacjach widzę tylko mac.

6

Odp: Nazwy hostów połączonych do wifi na Luci

jeśli  wiesz o co w tym chodzi  to można to wykorzystać    u mnie działa smile

#/bin/bash
 
ktojest()
{
 iw dev wlan0 station dump
}

vpn()
{
cat /etc/openvpn/current_status  | grep "10\.8"| sed -e 's/,/ /g'
}

nazwy ()
{
 echo -n -e "${BLUE}"
 sed -e  's/d8:57:ef:09:34:5e/d8:57:ef:09:34:5e Kox-kom       /g'|
 sed -e  's/f0:e7:7e:48:7f:e7/f0:e7:7e:48:7f:e7 Kinia-kom     /g' |
 sed -e  's/08:fd:0e:3b:1f:9e/08:fd:0e:3b:1f:9e Kinia-kom-LTE /g' |
 sed -e  's/00:26:82:1d:a2:c4/00:26:82:1d:a2:c4 Kinia-PC      /g' |
 sed -e  's/78:e4:00:1d:75:96/78:e4:00:1d:75:96 Ania-PC       /g' |
 sed -e  's/e0:b9:a5:0c:bf:af/e0:b9:a5:0c:bf:af Cyniu         /g'|
 sed -e  's/9c:b7:0d:be:5c:c5/9c:b7:0d:be:5c:c5 Marzena-PC    /g' |
 sed -e  's/c4:42:02:c9:60:35/c4:42:02:c9:60:35 Marzenka-kom  /g' |
 sed -e  's/d4:8f:33:a4:1c:64/d4:8f:33:a4:1c:64 Ania-kom      /g'|
 sed -e  's/00:25:d3:08:46:65/00:25:d3:08:46:65 Rydzol        /g'|
 sed -e  's/ec:89:f5:5c:c8:94/ec:89:f5:5c:c8:94 Cyniu-LENOVO  /g'|
 sed -e  's/94:63:d1:ce:9f:73/94:63:d1:ce:9f:73 Cyniu-Komorka /g'|
 sed -e  's/24:fd:52:ef:e1:5e/24:fd:52:ef:e1:5e Grzesiek      /g'|
 sed -e  's/10:68:3f:ef:92:ca/10:68:3f:ef:92:ca Doska-kom     /g'|
 sed -e  's/7c:dd:90:39:6d:33/7c:dd:90:39:6d:33 ip_KAMERKA    /g'|
 sed -e  's/c4:17:fe:ae:db:82/c4:17:fe:ae:db:82 Koks-PC       /g'
      }
adresy ()
{
echo -n -e "${GREEN}"
cat /proc/net/arp  | egrep `iw dev wlan0 station dump  | egrep -io '(..:){5}..' | tr '\n' '|' | sed 's/.$/\n/'`|awk '{print $4 " " $1}'
}

adresy2 ()
{
echo -n -e "${RED}"
cat /tmp/dhcp.leases  | egrep `iw dev wlan0 station dump   | egrep -io '(..:){5}..' | tr '\n' '|' | sed 's/.$/\n/'`|awk '{print $3 " " $4}'
}


case "$1" in

"m") ktojest | nazwy  ;;
"n") adresy2 | nazwy ;;
"a") adresy | nazwy ;;
"h") echo -e " $BLUE mozesz wybrac \"m n a\" " ;;
*)   ktojest |nazwy  |grep Station | sed 's/Station//g'
      echo -e "\n${RED}klienci VPN${BLUE}"
      vpn ;;
#*) adresy | nazwy ;;

  esac

echo -n  -e "${DEF_COLOR}"

wyświetla nazwy z jakim pozgłaszały się komputery  jak i samemu można nadać nazwę

7

Odp: Nazwy hostów połączonych do wifi na Luci

Piszę, może komuś się przyda, jak to zrobiłem u siebie na BB z Luci.

Pod "Własne komendy" w Luci wprowadziłem taki skrypt, który wyświetla IP oraz nazwę hosta aktualnie podpiętych klientów wifi:

for mac in $(iw dev wlan0 station dump | grep Station | awk {'print $2'});
do
        cat /tmp/dhcp.leases|grep $mac|awk '{print $3" "$4}' ;
done

Asus TUF-AX4200 | AX3000T | NSA310b | PiHole

8

Odp: Nazwy hostów połączonych do wifi na Luci

Gdzie są te własne komendy? Gdzieś na OpenWrt widziałem patch do tego ale pewnie trzeba by sobie z nim obraz zbudować (więc dla mnie odpada).

9

Odp: Nazwy hostów połączonych do wifi na Luci

U mnie w wersji standardowej Luci w menu górnym System->Własne komendy

Przyczym wcześniej musisz stworzyć ten skrypt poprzez ssh i dopiero podpiąć w menu.

Asus TUF-AX4200 | AX3000T | NSA310b | PiHole

10

Odp: Nazwy hostów połączonych do wifi na Luci

Dzięki. Nie mam tej opcji więc pewnie muszę doinstalować. Sprawdzę sobie.

11

Odp: Nazwy hostów połączonych do wifi na Luci

Tutaj można znaleźć małą poprawkę, która pozwoli na wyświetlanie nazw hostów.
O dziwno u mnie część nazw hostów wyświetla, a cześć nie. Na Gargoyle nie miałem takich "problemów".
https://github.com/openwrt/luci/issues/540

12

Odp: Nazwy hostów połączonych do wifi na Luci

Zmień zawartość tego pliku  /usr/lib/lua/luci/view/admin_status/index.htm na :

<%#
 Copyright 2008 Steven Barth <steven@midlink.org>
 Copyright 2008-2011 Jo-Philipp Wich <jow@openwrt.org>
 Licensed to the public under the Apache License 2.0.
-%>

<%
    local fs = require "nixio.fs"
    local util = require "luci.util"
    local stat = require "luci.tools.status"
    local ver = require "luci.version"

    local has_ipv6 = fs.access("/proc/net/ipv6_route")
    local has_dhcp = fs.access("/etc/config/dhcp")
    local has_wifi = ((fs.stat("/etc/config/wireless", "size") or 0) > 0)

    local sysinfo = luci.util.ubus("system", "info") or { }
    local boardinfo = luci.util.ubus("system", "board") or { }
    local unameinfo = nixio.uname() or { }

    local meminfo = sysinfo.memory or {
        total = 0,
        free = 0,
        buffered = 0,
        shared = 0
    }

    local swapinfo = sysinfo.swap or {
        total = 0,
        free = 0
    }

    local has_dsl = fs.access("/etc/init.d/dsl_control")

    if luci.http.formvalue("status") == "1" then
        local ntm = require "luci.model.network".init()
        local wan = ntm:get_wannet()
        local wan6 = ntm:get_wan6net()

        local conn_count = tonumber((
            luci.sys.exec("wc -l /proc/net/nf_conntrack") or
            luci.sys.exec("wc -l /proc/net/ip_conntrack") or
            ""):match("%d+")) or 0

        local conn_max = tonumber((
            luci.sys.exec("sysctl net.nf_conntrack_max") or
            luci.sys.exec("sysctl net.ipv4.netfilter.ip_conntrack_max") or
            ""):match("%d+")) or 4096

        local rv = {
            uptime     = sysinfo.uptime or 0,
            localtime  = os.date(),
            loadavg    = sysinfo.load or { 0, 0, 0 },
            memory     = meminfo,
            swap       = swapinfo,
            connmax    = conn_max,
            conncount  = conn_count,
            leases     = stat.dhcp_leases(),
            leases6    = stat.dhcp6_leases(),
            wifinets   = stat.wifi_networks()
        }

        if wan then
            rv.wan = {
                ipaddr  = wan:ipaddr(),
                gwaddr  = wan:gwaddr(),
                netmask = wan:netmask(),
                dns     = wan:dnsaddrs(),
                expires = wan:expires(),
                uptime  = wan:uptime(),
                proto   = wan:proto(),
                ifname  = wan:ifname(),
                link    = wan:adminlink()
            }
        end

        if wan6 then
            rv.wan6 = {
                ip6addr = wan6:ip6addr(),
                gw6addr = wan6:gw6addr(),
                dns     = wan6:dns6addrs(),
                uptime  = wan6:uptime(),
                ifname  = wan6:ifname(),
                link    = wan6:adminlink()
            }
        end

        if has_dsl then
            local dsl_stat = luci.sys.exec("/etc/init.d/dsl_control lucistat")
            local dsl_func = loadstring(dsl_stat)
            rv.dsl = dsl_func()
        end

        luci.http.prepare_content("application/json")
        luci.http.write_json(rv)

        return
    end
-%>
<%
local sys = require "luci.sys"
    local arpcache = { }
    
    -- collect MAC hints (mac is already upper, but be robust)
     -- this reads arp cache, /etc/ethers, dhcp leases, etc 
     sys.net.mac_hints(function(mac,name) arpcache[mac:upper()] = name end)
     -- add IP address, if entry is just a name (or name, if just an IP addr)
     sys.net.arptable(function(e)
         local m = e["HW address"]:upper()
         local s = arpcache[m]
         if s and not s:match("^[0-9.]+$") then
             arpcache[m] = "%s [%s]" %{ s, e["IP address"] }
         elseif not s then -- possibly if it just appeared in the arp cache
            arpcache[m] = "%s [%s]" %{ nixio.getnameinfo(e["IP address"]), e["IP address"] }
         end
     end)
-%>
<%+header%>

<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript">//<![CDATA[
    function progressbar(v, m)
    {
        var vn = parseInt(v) || 0;
        var mn = parseInt(m) || 100;
        var pc = Math.floor((100 / mn) * vn);

        return String.format(
            '<div style="width:200px; position:relative; border:1px solid #999999">' +
                '<div style="background-color:#CCCCCC; width:%d%%; height:15px">' +
                    '<div style="position:absolute; left:0; top:0; text-align:center; width:100%%; color:#000000">' +
                        '<small>%s / %s (%d%%)</small>' +
                    '</div>' +
                '</div>' +
            '</div>', pc, v, m, pc
        );
    }

    var wifidevs = <%=luci.http.write_json(netdevs)%>;
    var arptable = <%=luci.http.write_json(arpcache)%>;

    XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 },
        function(x, info)
        {
            var si = document.getElementById('wan4_i');
            var ss = document.getElementById('wan4_s');
            var ifc = info.wan;

            if (ifc && ifc.ifname && ifc.proto != 'none')
            {
                var s = String.format(
                    '<strong><%:Type%>: </strong>%s<br />' +
                    '<strong><%:Address%>: </strong>%s<br />' +
                    '<strong><%:Netmask%>: </strong>%s<br />' +
                    '<strong><%:Gateway%>: </strong>%s<br />',
                        ifc.proto,
                        (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0',
                        (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255',
                        (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0'
                );

                for (var i = 0; i < ifc.dns.length; i++)
                {
                    s += String.format(
                        '<strong><%:DNS%> %d: </strong>%s<br />',
                        i + 1, ifc.dns[i]
                    );
                }

                if (ifc.expires > -1)
                {
                    s += String.format(
                        '<strong><%:Expires%>: </strong>%t<br />',
                        ifc.expires
                    );
                }

                if (ifc.uptime > 0)
                {
                    s += String.format(
                        '<strong><%:Connected%>: </strong>%t<br />',
                        ifc.uptime
                    );
                }

                ss.innerHTML = String.format('<small>%s</small>', s);
                si.innerHTML = String.format(
                    '<img src="<%=resource%>/icons/ethernet.png" />' +
                    '<br /><small><a href="%s">%s</a></small>',
                        ifc.link, ifc.ifname
                );
            }
            else
            {
                si.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>';
                ss.innerHTML = '<em><%:Not connected%></em>';
            }

            <% if has_ipv6 then %>
            var si6 = document.getElementById('wan6_i');
            var ss6 = document.getElementById('wan6_s');
            var ifc6 = info.wan6;

            if (ifc6 && ifc6.ifname && ifc6.proto != 'none')
            {
                var s = String.format(
                    '<strong><%:Address%>: </strong>%s<br />' +
                    '<strong><%:Gateway%>: </strong>%s<br />',
                        (ifc6.ip6addr) ? ifc6.ip6addr : '::',
                        (ifc6.gw6addr) ? ifc6.gw6addr : '::'
                );

                for (var i = 0; i < ifc6.dns.length; i++)
                {
                    s += String.format(
                        '<strong><%:DNS%> %d: </strong>%s<br />',
                        i + 1, ifc6.dns[i]
                    );
                }

                if (ifc6.uptime > 0)
                {
                    s += String.format(
                        '<strong><%:Connected%>: </strong>%t<br />',
                        ifc6.uptime
                    );
                }

                ss6.innerHTML = String.format('<small>%s</small>', s);
                si6.innerHTML = String.format(
                    '<img src="<%=resource%>/icons/ethernet.png" />' +
                    '<br /><small><a href="%s">%s</a></small>',
                        ifc6.link, ifc6.ifname
                );
            }
            else
            {
                si6.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>';
                ss6.innerHTML = '<em><%:Not connected%></em>';
            }
            <% end %>

            <% if has_dsl then %>
                var dsl_i = document.getElementById('dsl_i');
                var dsl_s = document.getElementById('dsl_s');

                var s = String.format(
                    '<strong><%:Status%>: </strong>%s<br />' +
                    '<strong><%:Line State%>: </strong>%s [0x%x]<br />' +
                    '<strong><%:Line Speed%>: </strong>%s/s / %s/s<br />' +
                    '<strong><%:Line Attenuation%>: </strong>%s dB / %s dB<br />' +
                    '<strong><%:Noise Margin%>: </strong>%s dB / %s dB<br />',
                        info.dsl.line_state, info.dsl.line_state_detail,
                        info.dsl.line_state_num,
                        info.dsl.data_rate_down_s, info.dsl.data_rate_up_s,
                        info.dsl.line_attenuation_down, info.dsl.line_attenuation_up,
                        info.dsl.noise_margin_down, info.dsl.noise_margin_up
                );

                dsl_s.innerHTML = String.format('<small>%s</small>', s);
                dsl_i.innerHTML = String.format(
                    '<img src="<%=resource%>/icons/ethernet.png" />' +
                    '<br /><small>ADSL</small>'
                );
            <% end %>

            <% if has_dhcp then %>
            var ls = document.getElementById('lease_status_table');
            if (ls)
            {
                /* clear all rows */
                while( ls.rows.length > 1 )
                    ls.rows[0].parentNode.deleteRow(1);

                for( var i = 0; i < info.leases.length; i++ )
                {
                    var timestr;

                    if (info.leases[i].expires <= 0)
                        timestr = '<em><%:expired%></em>';
                    else
                        timestr = String.format('%t', info.leases[i].expires);

                    var tr = ls.rows[0].parentNode.insertRow(-1);
                        tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);

                    tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?';
                    tr.insertCell(-1).innerHTML = info.leases[i].ipaddr;
                    tr.insertCell(-1).innerHTML = info.leases[i].macaddr;
                    tr.insertCell(-1).innerHTML = timestr;
                }

                if( ls.rows.length == 1 )
                {
                    var tr = ls.rows[0].parentNode.insertRow(-1);
                        tr.className = 'cbi-section-table-row';

                    var td = tr.insertCell(-1);
                        td.colSpan = 4;
                        td.innerHTML = '<em><br /><%:There are no active leases.%></em>';
                }
            }

            var ls6 = document.getElementById('lease6_status_table');
            if (ls6 && info.leases6)
            {
                ls6.parentNode.style.display = 'block';

                /* clear all rows */
                while( ls6.rows.length > 1 )
                    ls6.rows[0].parentNode.deleteRow(1);

                for( var i = 0; i < info.leases6.length; i++ )
                {
                    var timestr;

                    if (info.leases6[i].expires <= 0)
                        timestr = '<em><%:expired%></em>';
                    else
                        timestr = String.format('%t', info.leases6[i].expires);

                    var tr = ls6.rows[0].parentNode.insertRow(-1);
                        tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);

                    tr.insertCell(-1).innerHTML = info.leases6[i].hostname ? info.leases6[i].hostname : '?';
                    tr.insertCell(-1).innerHTML = info.leases6[i].ip6addr;
                    tr.insertCell(-1).innerHTML = info.leases6[i].duid;
                    tr.insertCell(-1).innerHTML = timestr;
                }

                if( ls6.rows.length == 1 )
                {
                    var tr = ls6.rows[0].parentNode.insertRow(-1);
                        tr.className = 'cbi-section-table-row';

                    var td = tr.insertCell(-1);
                        td.colSpan = 4;
                        td.innerHTML = '<em><br /><%:There are no active leases.%></em>';
                }
            }
            <% end %>

            <% if has_wifi then %>
            var assoclist = [ ];

            var ws = document.getElementById('wifi_status_table');
            if (ws)
            {
                var wsbody = ws.rows[0].parentNode;
                while (ws.rows.length > 0)
                    wsbody.deleteRow(0);

                for (var didx = 0; didx < info.wifinets.length; didx++)
                {
                    var dev = info.wifinets[didx];

                    var tr = wsbody.insertRow(-1);
                    var td;

                    td = tr.insertCell(-1);
                    td.width     = "33%";
                    td.innerHTML = dev.name;
                    td.style.verticalAlign = "top";

                    td = tr.insertCell(-1);

                    var s = '';

                    for (var nidx = 0; nidx < dev.networks.length; nidx++)
                    {
                        var net = dev.networks[nidx];
                        var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel && !net.disabled);

                        var icon;
                        if (!is_assoc)
                            icon = "<%=resource%>/icons/signal-none.png";
                        else if (net.quality == 0)
                            icon = "<%=resource%>/icons/signal-0.png";
                        else if (net.quality < 25)
                            icon = "<%=resource%>/icons/signal-0-25.png";
                        else if (net.quality < 50)
                            icon = "<%=resource%>/icons/signal-25-50.png";
                        else if (net.quality < 75)
                            icon = "<%=resource%>/icons/signal-50-75.png";
                        else
                            icon = "<%=resource%>/icons/signal-75-100.png";

                        s += String.format(
                            '<table><tr><td style="text-align:center; width:32px; padding:3px">' +
                                '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />' +
                                '<br /><small>%d%%</small>' +
                            '</td><td style="text-align:left; padding:3px"><small>' +
                                '<strong><%:SSID%>:</strong> <a href="%s">%h</a><br />' +
                                '<strong><%:Mode%>:</strong> %s<br />' +
                                '<strong><%:Channel%>:</strong> %d (%.3f <%:GHz%>)<br />' +
                                '<strong><%:Bitrate%>:</strong> %s <%:Mbit/s%><br />',
                                icon, net.signal, net.noise,
                                net.quality,
                                net.link, net.ssid,
                                net.mode,
                                net.channel, net.frequency,
                                net.bitrate || '?'
                        );

                        if (is_assoc)
                        {
                            s += String.format(
                                '<strong><%:BSSID%>:</strong> %s<br />' +
                                '<strong><%:Encryption%>:</strong> %s',
                                    net.bssid,
                                    net.encryption
                            );
                        }
                        else
                        {
                            s += '<em><%:Wireless is disabled or not associated%></em>';
                        }

                        s += '</small></td></tr></table>';

                        for (var bssid in net.assoclist)
                        {
                            assoclist.push({
                                bssid:    bssid,
                                signal:   net.assoclist[bssid].signal,
                                noise:    net.assoclist[bssid].noise,
                                rx_rate:  net.assoclist[bssid].rx_rate,
                                rx_mcs:   net.assoclist[bssid].rx_mcs,
                                rx_40mhz: net.assoclist[bssid].rx_40mhz,
                                tx_rate:  net.assoclist[bssid].tx_rate,
                                tx_mcs:   net.assoclist[bssid].tx_mcs,
                                tx_40mhz: net.assoclist[bssid].tx_40mhz,
                                link:     net.link,
                                name:     net.name
                            });
                        }
                    }

                    if (!s)
                        s = '<em><%:No information available%></em>';

                    td.innerHTML = s;
                }
            }

            var ac = document.getElementById('wifi_assoc_table');
            if (ac)
            {
                /* clear all rows */
                while( ac.rows.length > 1 )
                    ac.rows[0].parentNode.deleteRow(1);

                assoclist.sort(function(a, b) {
                    return (a.name == b.name)
                        ? (a.bssid < b.bssid)
                        : (a.name  > b.name )
                    ;
                });

                for( var i = 0; i < assoclist.length; i++ )
                {
                    var tr = ac.rows[0].parentNode.insertRow(-1);
                        tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2));

                    var icon;
                    var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5;
                    if (q < 1)
                        icon = "<%=resource%>/icons/signal-0.png";
                    else if (q < 2)
                        icon = "<%=resource%>/icons/signal-0-25.png";
                    else if (q < 3)
                        icon = "<%=resource%>/icons/signal-25-50.png";
                    else if (q < 4)
                        icon = "<%=resource%>/icons/signal-50-75.png";
                    else
                        icon = "<%=resource%>/icons/signal-75-100.png";

                    tr.insertCell(-1).innerHTML = String.format(
                        '<img src="%s" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%>" />',
                        icon, assoclist[i].signal, assoclist[i].noise
                    );
                    tr.insertCell(-1).innerHTML = arptable[assoclist[i].bssid] ? arptable[assoclist[i].bssid] : '?'; 

                    tr.insertCell(-1).innerHTML = assoclist[i].bssid;

                    tr.insertCell(-1).innerHTML = String.format(
                        '<a href="%s">%s</a>',
                            assoclist[i].link,
                            '%h'.format(assoclist[i].name).nobr()
                    );

                    tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].signal).nobr();
                    tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].noise).nobr();

                    tr.insertCell(-1).innerHTML = (assoclist[i].rx_mcs > -1)
                        ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].rx_rate / 1000, assoclist[i].rx_mcs, assoclist[i].rx_40mhz ? 40 : 20).nobr()
                        : String.format('%.1f <%:Mbit/s%>', assoclist[i].rx_rate / 1000).nobr()
                    ;

                    tr.insertCell(-1).innerHTML = (assoclist[i].tx_mcs > -1)
                        ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].tx_rate / 1000, assoclist[i].tx_mcs, assoclist[i].tx_40mhz ? 40 : 20).nobr()
                        : String.format('%.1f <%:Mbit/s%>', assoclist[i].tx_rate / 1000).nobr()
                    ;
                }

                if (ac.rows.length == 1)
                {
                    var tr = ac.rows[0].parentNode.insertRow(-1);
                        tr.className = 'cbi-section-table-row';

                    var td = tr.insertCell(-1);
                        td.colSpan = 7;
                        td.innerHTML = '<br /><em><%:No information available%></em>';
                }
            }
            <% end %>

            var e;

            if (e = document.getElementById('localtime'))
                e.innerHTML = info.localtime;

            if (e = document.getElementById('uptime'))
                e.innerHTML = String.format('%t', info.uptime);

            if (e = document.getElementById('loadavg'))
                e.innerHTML = String.format(
                    '%.02f, %.02f, %.02f',
                    info.loadavg[0] / 65535.0,
                    info.loadavg[1] / 65535.0,
                    info.loadavg[2] / 65535.0
                );

            if (e = document.getElementById('memtotal'))
                e.innerHTML = progressbar(
                    ((info.memory.free + info.memory.buffered) / 1024) + " <%:kB%>",
                    (info.memory.total / 1024) + " <%:kB%>"
                );

            if (e = document.getElementById('memfree'))
                e.innerHTML = progressbar(
                    (info.memory.free / 1024) + " <%:kB%>",
                    (info.memory.total / 1024) + " <%:kB%>"
                );

            if (e = document.getElementById('membuff'))
                e.innerHTML = progressbar(
                    (info.memory.buffered / 1024) + " <%:kB%>",
                    (info.memory.total / 1024) + " <%:kB%>"
                );

            if (e = document.getElementById('swaptotal'))
                e.innerHTML = progressbar(
                    (info.swap.free / 1024) + " <%:kB%>",
                    (info.swap.total / 1024) + " <%:kB%>"
                );

            if (e = document.getElementById('swapfree'))
                e.innerHTML = progressbar(
                    (info.swap.free / 1024) + " <%:kB%>",
                    (info.swap.total / 1024) + " <%:kB%>"
                );

            if (e = document.getElementById('conns'))
                e.innerHTML = progressbar(info.conncount, info.connmax);

        }
    );
//]]></script>

<h2><a id="content" name="content"><%:Status%></a></h2>

<fieldset class="cbi-section">
    <legend><%:System%></legend>

    <table width="100%" cellspacing="10">
        <tr><td width="33%"><%:Hostname%></td><td><%=luci.sys.hostname() or "?"%></td></tr>
        <tr><td width="33%"><%:Model%></td><td><%=pcdata(boardinfo.model or boardinfo.system or "?")%></td></tr>
        <tr><td width="33%"><%:Firmware Version%></td><td>
            <%=pcdata(ver.distname)%> <%=pcdata(ver.distversion)%> /
            <%=pcdata(ver.luciname)%> (<%=pcdata(ver.luciversion)%>)
        </td></tr>
        <tr><td width="33%"><%:Kernel Version%></td><td><%=unameinfo.release or "?"%></td></tr>
        <tr><td width="33%"><%:Local Time%></td><td id="localtime">-</td></tr>
        <tr><td width="33%"><%:Uptime%></td><td id="uptime">-</td></tr>
        <tr><td width="33%"><%:Load Average%></td><td id="loadavg">-</td></tr>
    </table>
</fieldset>

<fieldset class="cbi-section">
    <legend><%:Memory%></legend>

    <table width="100%" cellspacing="10">
        <tr><td width="33%"><%:Total Available%></td><td id="memtotal">-</td></tr>
        <tr><td width="33%"><%:Free%></td><td id="memfree">-</td></tr>
        <tr><td width="33%"><%:Buffered%></td><td id="membuff">-</td></tr>
    </table>
</fieldset>

<% if swapinfo.total > 0 then %>
<fieldset class="cbi-section">
    <legend><%:Swap%></legend>

    <table width="100%" cellspacing="10">
        <tr><td width="33%"><%:Total Available%></td><td id="swaptotal">-</td></tr>
        <tr><td width="33%"><%:Free%></td><td id="swapfree">-</td></tr>
    </table>
</fieldset>
<% end %>

<fieldset class="cbi-section">
    <legend><%:Network%></legend>

    <table width="100%" cellspacing="10">
        <tr><td width="33%" style="vertical-align:top"><%:IPv4 WAN Status%></td><td>
            <table><tr>
                <td id="wan4_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
                <td id="wan4_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
            </tr></table>
        </td></tr>
        <% if has_ipv6 then %>
        <tr><td width="33%" style="vertical-align:top"><%:IPv6 WAN Status%></td><td>
            <table><tr>
                <td id="wan6_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
                <td id="wan6_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
            </tr></table>
        </td></tr>
        <% end %>
        <tr><td width="33%"><%:Active Connections%></td><td id="conns">-</td></tr>
    </table>
</fieldset>

<% if has_dhcp then %>
<fieldset class="cbi-section">
    <legend><%:DHCP Leases%></legend>

    <table class="cbi-section-table" id="lease_status_table">
        <tr class="cbi-section-table-titles">
            <th class="cbi-section-table-cell"><%:Hostname%></th>
            <th class="cbi-section-table-cell"><%:IPv4-Address%></th>
            <th class="cbi-section-table-cell"><%:MAC-Address%></th>
            <th class="cbi-section-table-cell"><%:Leasetime remaining%></th>
        </tr>
        <tr class="cbi-section-table-row">
            <td colspan="4"><em><br /><%:Collecting data...%></em></td>
        </tr>
    </table>
</fieldset>

<fieldset class="cbi-section" style="display:none">
    <legend><%:DHCPv6 Leases%></legend>

    <table class="cbi-section-table" id="lease6_status_table">
        <tr class="cbi-section-table-titles">
            <th class="cbi-section-table-cell"><%:Hostname%></th>
            <th class="cbi-section-table-cell"><%:IPv6-Address%></th>
            <th class="cbi-section-table-cell"><%:DUID%></th>
            <th class="cbi-section-table-cell"><%:Leasetime remaining%></th>
        </tr>
        <tr class="cbi-section-table-row">
            <td colspan="4"><em><br /><%:Collecting data...%></em></td>
        </tr>
    </table>
</fieldset>
<% end %>

<% if has_dsl then %>
<fieldset class="cbi-section">
       <legend><%:ADSL%></legend>
       <table width="100%" cellspacing="10">
               <tr><td width="33%" style="vertical-align:top"><%:ADSL Status%></td><td>
                       <table><tr>
                               <td id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
                               <td id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>
                       </tr></table>
               </td></tr>
       </table>
</fieldset>
<% end %>

<% if has_wifi then %>
<fieldset class="cbi-section">
    <legend><%:Wireless%></legend>

    <table id="wifi_status_table" width="100%" cellspacing="10">
        <tr><td><em><%:Collecting data...%></em></td></tr>
    </table>
</fieldset>

<fieldset class="cbi-section">
    <legend><%:Associated Stations%></legend>

    <table class="cbi-section-table" id="wifi_assoc_table">
        <tr class="cbi-section-table-titles">
            <th class="cbi-section-table-cell">&#160;</th>
            <th class="cbi-section-table-cell"><%:Hostname%></th> 
            <th class="cbi-section-table-cell"><%:MAC-Address%></th>
            <th class="cbi-section-table-cell"><%:Network%></th>
            <th class="cbi-section-table-cell"><%:Signal%></th>
            <th class="cbi-section-table-cell"><%:Noise%></th>
            <th class="cbi-section-table-cell"><%:RX Rate%></th>
            <th class="cbi-section-table-cell"><%:TX Rate%></th>
        </tr>
        <tr class="cbi-section-table-row">
            <td colspan="7"><em><br /><%:Collecting data...%></em></td>
        </tr>
    </table>
</fieldset>
<% end %>

<%-
    local incdir = util.libpath() .. "/view/admin_status/index/"
    if fs.access(incdir) then
        local inc
        for inc in fs.dir(incdir) do
            if inc:match("%.htm$") then
                include("admin_status/index/" .. inc:gsub("%.htm$", ""))
            end
        end
    end
-%>

<%+footer%>

I będzie podawało nazwę hosta zamiast mac na stronę głównej  sprawdzone u mnie działa.

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

13

Odp: Nazwy hostów połączonych do wifi na Luci

To już lepiej działa - dzięki.

14

Odp: Nazwy hostów połączonych do wifi na Luci

Podmieniłem, ale dlaczego w nazwie hosta mam same "?" ???

http://zapisz.net/images/706_wi_fi.jpg

15 (edytowany przez pepe2k 2016-10-02 19:35:08)

Odp: Nazwy hostów połączonych do wifi na Luci

onken napisał/a:

Podmieniłem, ale dlaczego w nazwie hosta mam same "?" ???

[ciach]

Zamazałbyś te adresy MAC...

16

Odp: Nazwy hostów połączonych do wifi na Luci

teraz jak dałes cyctat to juz nie mam jak smile

17

Odp: Nazwy hostów połączonych do wifi na Luci

onken a masz przypisane nazwy hostów do mac w pliku /etc/config/dhcp

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

18 (edytowany przez onken 2016-10-03 11:04:56)

Odp: Nazwy hostów połączonych do wifi na Luci

ano nie mam smile

Czyli musze przypisać, a przeciez nieraz same się identyfikują, loteria

A da sie jakos przypisać i aby pokazywało adresy podpięte po LAN ??

19

Odp: Nazwy hostów połączonych do wifi na Luci

Jak dodasz definicje hostów to będzie, o ile są z DHCP.