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
>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 (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
>
>
>
>-- 
>Systemdaten:
>============
>- virtualisiert mit Proxmox 2.3
>- linuxmuster.net 6.0.46
>- IPFire 2.15
>- Linbo 2.1.10-0
>- Ubuntu 14.04 Clients (trusty714-Vorlage)
>- leoclient1 mit WinXP im offline-Modus
>- Moodle 2.7.8 (extern mit LDAPS und openLML-Modul)
>- WLAN: Unifi-APs (UAP-AC) am CoovaChilli
>- Info-Boards: tabula.info Server + RasPi-Clients
>_______________________________________________
>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

Antwort per Email an