So, ich habe das gerade noch einmal zu Hause getestet:
function is_mac {
mac="$1"
echo "$mac" | grep -q -E "^([[:xdigit:]]{2}[:-]){5}[[:xdigit:]]{2}$"
return $?
}
Das Grep-Pattern sollte man noch in Anführungszeichen setzen. Ansonsten
funktioniert das 1a :-)
LG Yannik
Am 17.05.2015 um 18:00 schrieb Yannik Sembritzki:
> Für die MAC noch ein Tipp:
>
> function is_mac {
> mac="$1"
> echo "$mac" | grep -q -E ^([[:xdigit:]]{2}[:-]){5}[[:xdigit:]]{2}$
> return $?
> }
>
> Und dann
>
> users=$(chilli_query list | grep pass | awk '{print $6}' )
> echo "Die folgenden Benutzer sind angemeldet: $users"
>
> echo
> echo "Die User werden abgemeldet:"
> echo "==========================="
>
> for user in $users; do
> if is_mac "$user"; then
> echo "$i ist eine MAC und bleibt angemeldet!"
> else
> echo "User-Name=$user" | radclient -x 127.0.0.1:3779 disconnect
> "$secret" | grep User-Name
> fi
> done
>
> Das ist jetzt nur schnell auf dem Handy aus dem Kopf getippert, kann
> also sein, dass da noch ein paar kleinere bugs drin sind. Vom Prinzip
> her sollte es aber so gehen.
>
> LG Yannik
> --
> sent from mobile
>
> Am 17. Mai 2015 17:22:03 MESZ, schrieb Michael Hagedorn
> <[email protected]>:
>
> OK!
>
> Hier Version 1.0 beta .... funktioniert und macht genau das, was es
> soll! Ich konnte allerdings noch keinen Massentest durchführen sondern
> habe immer nur meinen eigenen Login und die Mac des Unifi-Controllers
> abwechselnd benutzt ... anders ging es nicht (remote + Wochenende)
>
> ------------------------------------------------------------------------
>
>
> Scriptname: disconnect-user.sh <http://disconnect-user.sh>
> Cronjob: in jeder großen Pause und am Ende des Tages!
>
>
> #!/bin/bash
>
> # Radiussecret wird automatisch ausgelesen:
> secret=$(cat /etc/chilli/hs.conf |grep ^radiussecret | cut -d "\"" -f 2)
>
> # Liste aller angemeldeten WLAN-User, die in den Pausen disconnected
> # werden sollen.
> # User die nur als "MAC-Adresse" auftauchen duerfen ohne Auth ins WLAN.
> # Diese sollen beim disconnect natürlich unberücksichtigt lassen.
>
> echo
> echo
> echo "Folgende User sind angemeldet:"
> echo "
> ------------------------------------------------------------------------
> "
> LIST=$(chilli_query list | grep pass | awk '{print $6}' )
> echo $LIST
>
> echo
> echo "Die User werden abgemeldet:"
> echo "==========================="
>
> for i in $LIST
> do
> # Wenn Username eine MAC-Adr ist, ist er 18 Zeichen (incl CR) lang --
> # sonst nur 6 (bzw 7); geprüft wird daher auf 12 Zeichen:
> userlength=$(echo $i | wc -c)
> if [ $userlength -gt 12 ]
> then
> echo "$i bleibt angemeldet!"
> else
> #echo $LIST
> echo "User-Name=$i" | radclient -x 127.0.0.1:3779 disconnect
> "$secret" | grep User-Name
> fi
> done
> echo
> echo
> echo "Nach 'disconnect' sind noch angemeldet:"
> echo "
> ------------------------------------------------------------------------
> "
> chilli_query list | grep pass | awk '{print $6}'
>
> echo
> echo
>
> exit 0
>
> ------------------------------------------------------------------------
>
>
> Zusätzlich habe ich einen Code-Schnipsel von Jesko (?) benutzt, der alle
> angemeldeten User übersichtlich und mit
> allen notwendigen Angaben anzeigt:
>
> Scriptname: user-online.sh <http://user-online.sh> (für root!)
>
>
> #!/bin/bash
> echo
> echo "Folgende User sind angemeldet:"
> echo "
> ------------------------------------------------------------------------
> "
> echo
>
> chilli_query list | grep pass | awk 'BEGIN {printf("%10s %18s %30s %45s
> \n" ,"USER", "IP", "MAC", "Initial-URL")} {printf("%10s %18s %30s %45s
> \n", $6, $2, $1, $15)}'
> echo
> echo
>
> ------------------------------------------------------------------------
>
>
> Damit läßt sich doch jetzt was anfangen!
> Tip-Top!
>
> Michael
>
>
>
>
> _______________________________________________
> linuxmuster-user mailing list
> [email protected]
> https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user
_______________________________________________
linuxmuster-user mailing list
[email protected]
https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user