Hi Michael,

kurzer Tipp zu deinem Skript: Ans Ende der Zeilen müssen keine
Semikolons hin.
Ansonsten würde ich das beim parsen des radiussecret statt "grep
radiussecret" "grep ^radiussecret" verwenden, da sonst auch der Begriff
"radiussecret" in Kommentaren oder auskommentierten Config-Zeilen
gemacht werden. Der 'cut -d "\"" -f 2)' Befehl ist suboptimal, da der
Konfigurationswert auch nicht in Anführungszeichen stehen kann.
('radiussecret    radTest' oder 'radiussecret    "radTest"'). Da würde
ich eher (zum Beispiel, außerdem frei geschrieben und ungetestet) sowas
benutzen: sed 's/^radiussecret[[:space:]]+"*(.*)"*$/\1/g'.
Statt

echo "User-Name=$i" | radclient -x 127.0.0.1:3779 disconnect $secret 

solltest du

echo "User-Name=$i" | radclient -x 127.0.0.1:3779 disconnect "$secret" 

benutzen, für den Fall, dass secret Zeichen die escaped werden müssen
beinhaltet.

"|grep pass" kann man wahrscheinlich auch noch durch eine schönere regex
ersetzen, ich kenne die Ausgabe von "chilli_query list" aber nicht.

LG Yannik

Am 17.05.2015 um 12:43 schrieb Michael Hagedorn:
> Ok -- wer A sagt ...
>
> Hier kommt eine erste Fassung für ein kleines "disconnect-script".
> Vielleicht kann's ja auch sonst noch jemand gebrauchen??
> (Die Änderungen bzgl coaport müssen natürlich vorher durchgeführt werden!)
>
> Leider ist eine Sache noch nicht eingebaut -- und zwar die
> Unterscheidung der User, die regulär eingeloggt sind im Vergeleich zu
> denen, die ohne Auth. surfen dürfen und die natürlich NICHT abgemeldet
> werden sollen ... aber das Script selbst funktioniert schon mal.
>
> Anstelle von awk geht hier sicher auch cut bzw geht's auch sonst sicher
>  eleganter ...  Verbesserungsvorschläge sind natürlich willkommen!
>
> -------------------------------------------------------------------
>
> root@linuxmuster-chilli:/home/coovaadmin# cat disconnect-user.sh
>
>
> #!/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.
> # Diese Unterscheidung muss noch eingebaut werden!
>
> echo
> echo
> echo "Folgende User sind angemeldet:";
> echo "==============================";
> LIST=$(chilli_query list | grep pass | awk '{printf("%10s \n", $6, $2,
> $1, $8)}' );
> echo $LIST;
>
> echo
> echo "Diese User wurden abgemeldet:";
> echo "==============================";
>
> for i in $LIST
>  do
>   #echo $LIST
>   echo "User-Name=$i" | radclient -x 127.0.0.1:3779 disconnect $secret |
> grep User-Name;
> done
>
>
> echo
> echo
> echo "Nach 'disconnect' sind noch angemeldet:";
> echo "=======================================";
> chilli_query list | grep pass | awk '{printf("%10s \n", $6, $2, $1, $8)}' ;
>
> echo
> echo
>
> exit 0
>
>
> ------------------------------------------------------------------------------
>
> 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

Antwort per Email an