HowTo: Gruppen per SSH Zugriff auf WLAN gewähren

Hi.
Ich habe ein kleines Script geschrieben, mit dem man vom Server aus folgendes erreichen kann:

Es ist jetzt möglich, dass man völlig ohne Schulkonsole und nur via SSH einer oder mehreren Gruppen (Projekte oder Klassen) Zugriff auf das WLAN gewähren kann. Dazu wird der sophomorix-Befehl aufgerufen, der die Klasse bzw. das Projekt zu “p_wifi” hinzufügt. (default wurde beibehalten!)

Ich habe es hier getestet und es läuft! Das schöne daran: Es ist eine Mehrfachauswahl möglich und es läuft in der Konsole schneller als in der SchuKo.

(Da die Gruppen bei uns in jeder großen Pause durch einen Cronjob automatisch wieder aus p_wifi entfernt werden, benötige ich keine Option zum Entfernen. Man könnte das aber natürlich auch einbauen.)

Wer das Script gebrauchen kann --> Bitte sehr :slight_smile:

#!/bin/bash
#set -x

# wifi-access.sh, 05.12.2017 von M.H.
# Mit diesem Script kann man unter linuxmuster 6.x einer oder mehreren Gruppen/Projekten per SSH Zugriff
# auf das WLAN gewaehren. 
# Voraussetzungen: "dialog" muss installiert sein.

VER=1.0

############################################################################################################
# Datei, in der die gewaehlten Optionen gespeichert werden, zunaechst loeschen:
rm -f /tmp/options

#Die Checkliste benötigt drei Parameter: Zaehler, gruppe/kurs, wifi(dummy)
Zaehler=0
while IFS=";" read spalte1
do
  Zaehler=$((Zaehler+1))
  echo "$Zaehler $spalte1 wifi"  >>/tmp/options
done < <( sophomorix-project -i | awk '{print $1}' | grep p_  &&  sophomorix-class -i |awk '{print $1}'|tail -n +4 |head -n -2 )

OPTIONS=`cat /tmp/options`
choices=`/usr/bin/dialog --backtitle "WiFi-Access $VER" --stdout --checklist 'Welche Gruppe soll WLAN-Zugriff erhalten:' 30 75 25 ${OPTIONS}`

echo "Gruppen werden aufgenommen..."

if [ $? -eq 0 ]
then
 for choice in $choices
do
  #Anführungszeichen los werden:
  auswahl=$(echo $choice |sed 's/\"//g')

 while read nummer gruppe wifi 
  do 
   if [[ $auswahl = "$nummer" ]]; then 
   #Unterscheidung, ob Klasse oder Projekt:
       if [[ $gruppe =~ .*p_.* ]]
            then sophomorix-project -p p_wifi --addmemberprojects $gruppe;
            else sophomorix-project -p p_wifi --addmembergroups $gruppe;
       fi
  fi
  done < <( cat /tmp/options  )
done
else
    echo "Keine Auswahl! Ende!"
fi
#EOF