Ich mag es, schnell über alles notwendige eine Übersicht zu haben. Auf der Router-Statusseite fehlte mir dazu die Anzahl der verbundenen Clients und die Statistik wie sie in den Mesh-Maps angezeigt wird. Die kann man aber durch eine kleine Modifizoerung der Seite integrieren.
Zusätzlich wollte ich, dass die Statusseite sich automatisch alle X Sekunden von selber neu lädt um immer einen aktuellen Stand zu haben.
Das ganze ist kein Zaubertrick, pures HTML. Hier die Infos.
Die Datei findet ihr unter:
/lib/gluon/status-page/www/cgi-bin/status
Für den automatischen Reload:
io.write("<META HTTP-EQUIV=\"refresh\" CONTENT=\"20\">")
die „20“ stehen dabei für die Sekunden, in der Sich die Seite neu lädt.
Das ganze wird nach der Zeile:
io.write("<head>")
eingefügt.
Nun lädt die Seite sich alle 20 Sekunden automatisch neu.
Anzahl der verbundenen Clients anzeigen:
io.write("Clients: ")
io.write(escape_html(sys.exec("tail -n +3 /sys/kernel/debug/batman_adv/bat0/transtable_local | grep -v P | wc -l")))
Das ganze kommt über den Bereich:
io.write("<h2>Neighbours</h2>")
Client-Statistik aus der Mesh-Karte:
Nun verlinken wir eigentlich nur die original Grafik aus der Knotenübersicht der Mesh-Karte. Klickt dazu euren Knoten auf der Mesh-Karte an. Wenn die Übersicht eures Knoten geöffnet ist, kopiert ihr nur die „Node-ID“.
Jetzt fügt ihr folgenden Code unter dem eben hinzugefügten Code (also über dem Neibours-Bereich) hinzu:
io.write("<img src=\"http://map.ffgek.de/data/nodes/XXXXXXXXXXXX.png\" alt=\"ClientStat\">")
Die „XXXXXXXXXXXX“ stehen für eure Knoten-ID (Node-ID).
Solltet ihr in einem Anderen Netzwerk als GE sein. Solltet ihr den gesamten Grafiklink dort einfügen!
Clients anzeigen
(Aus dem Thema: PowerUser-Clients aussperren (61GB in vier Tagen) - #48 von roland übernommen)
io.write("<h2>Clients</h2>")
local interfaces = util.split(util.trim(util.exec("iw dev | grep AP -B 5 | grep Interface | cut -d' ' -f2")))
for _, ifname in ipairs(interfaces) do
io.write("<h3>" .. escape_html(ifname) .. "</h3>")
io.write("<pre>")
for _, line in ipairs(util.split(util.exec("iw dev " .. ifname .. " station dump"))) do
local mac = line:match("^Station (.*) %(on ")
if mac then
io.write("Station <a id=\"" .. escape_html(ifname) .. "-" .. mac .. "\">" .. mac .. "</a> (on " .. escape_html(ifname) .. ")\n")
else
io.write(escape_html(line) .. "\n")
end
end
io.write("</pre>")
end
Das ganze kann dann direkt unter dem Punkt der der Meshkarte.
Fertig!
Diese Änderungen werdet ihr übrigens nach jedem Update erneut durchführen müssen!
Ich hoffe ich konnte euch ein wenig inspirieren oder helfen. Feedback gerne erwünscht so lange es konstruktiv ist.