crazyhorse
Goto Top

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

/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.

Content-Key: 203923

Url: https://administrator.de/contentid/203923

Printed on: April 26, 2024 at 17:04 o'clock