Mit Shellscript Informationen aus laufendem Prozess (nodogsplash) extrahieren
Hallo,
ich brauche Hilfe bei der Erstellung eines Shellscripts, das bestimmte Informationen aus einem laufenden Prozess (nodogsplash) extrahieren und verarbeiten soll.
Router: TL-WR842ND
Betriessystem: OpenWrt / Trunk
Captive Portal: nodogsplash
Wenn ich per SSH auf meinen Router connecte und
ausführe, bekomme ich folgende Statusmeldung von nodogsplash:
Mein Ziel ist es, dass per Shellscript und crontab folgendes gemacht wird:
1) Rufe Statusmeldung von nodogsplash auf (siehe oben)
2) Wenn Client vorhanden, gehe zu Punkt 3. Ansonsten exit.
3) Extrahiere MAC und Verbindungsdauer von Client 1.
3.1) Wenn Verbindungsdauer ("Active duration", siehe Statusmeldung oben) größer oder gleich ist als 1, dann blocke die MAC von Client 1 mit dem Befehl "/usr/bin/ndsctl block MAC".
4) Wiederhole Punkt 3 bis 3.1 für alle anderen Clients. Wenn keine Clients mehr vorhanden dann exit.
Wie funktioniert sowas? Ich hatte mit grep und awk bisher nur mäßigen Erfolg, da ich das konzept noch nicht zu 100% verstanden habe.
Der Sinn des Ganzen ist es die Internetverbindung für meine Hotspot-Gäste auf eine Stunde pro Tag zu begrenzen. Ein weiterer Script soll alle 24 Stunden gestartet werden, damit alle blockierten MAC wieder "unblocked" werden.
Liebe Grüße,
crazyhorse.
Betriessystem: OpenWrt / Trunk
Captive Portal: nodogsplash
Wenn ich per SSH auf meinen Router connecte und
/usr/bin/ndsctl status
ausführe, bekomme ich folgende Statusmeldung von nodogsplash:
root@OpenWrt:/etc# /usr/bin/ndsctl status
==================
NoDogSplash Status
====
Version: 0.9_beta9.9.6
Uptime: 0d 21h 20m 19s
Gateway Name: NoDogSplash
Managed interface: br-lan
Managed IP range: 0.0.0.0/0
Server listening: 192.168.1.1:2050
Splashpage: /etc/nodogsplash/htdocs/splash.html
Traffic control: no
Total download: 0 kByte; avg: 0 kbit/s
Total upload: 0 kByte; avg: 0 kbit/s
====
Client authentications since start: 8
Httpd request threads created/current: 301/0
Current clients: 2
Client 0
IP: 192.168.1.125 MAC: XX:XX:XX:XX:XX:XX
Added: Mon Mar 25 12:13:44 2013
Active: Mon Mar 25 14:42:20 2013
Active duration: 0d 2h 28m 36s
Added duration: 0d 2h 29m 59s
Token: 0aeaa7e8
State: Authenticated
Download: 857 kByte; avg: 0.762148 kbit/s
Upload: 402 kByte; avg: 0.357597 kbit/s
Client 1
IP: 192.168.1.105 MAC: XX:XX:XX:XX:XX:XX
Added: Mon Mar 25 12:46:43 2013
Active: Mon Mar 25 14:43:43 2013
Active duration: 0d 1h 57m 0s
Added duration: 0d 1h 57m 0s
Token: 288d8db4
State: Authenticated
Download: 168781 kByte; avg: 192.344 kbit/s
Upload: 3801 kByte; avg: 4.33266 kbit/s
====
Blocked MAC addresses: none
Allowed MAC addresses: N/A
Trusted MAC addresses: none
========
Mein Ziel ist es, dass per Shellscript und crontab folgendes gemacht wird:
1) Rufe Statusmeldung von nodogsplash auf (siehe oben)
2) Wenn Client vorhanden, gehe zu Punkt 3. Ansonsten exit.
3) Extrahiere MAC und Verbindungsdauer von Client 1.
3.1) Wenn Verbindungsdauer ("Active duration", siehe Statusmeldung oben) größer oder gleich ist als 1, dann blocke die MAC von Client 1 mit dem Befehl "/usr/bin/ndsctl block MAC".
4) Wiederhole Punkt 3 bis 3.1 für alle anderen Clients. Wenn keine Clients mehr vorhanden dann exit.
Wie funktioniert sowas? Ich hatte mit grep und awk bisher nur mäßigen Erfolg, da ich das konzept noch nicht zu 100% verstanden habe.
Der Sinn des Ganzen ist es die Internetverbindung für meine Hotspot-Gäste auf eine Stunde pro Tag zu begrenzen. Ein weiterer Script soll alle 24 Stunden gestartet werden, damit alle blockierten MAC wieder "unblocked" werden.
Liebe Grüße,
crazyhorse.
Please also mark the comments that contributed to the solution of the article
Content-Key: 203923
Url: https://administrator.de/contentid/203923
Printed on: April 26, 2024 at 07:04 o'clock