Benutzer-Import in GOsa²

Der nachfolgende Abschnitt beschreibt den Benutzerimport aus Tabellen, die vom Schulsekretariat zur Verfügung gestellt werden. Die Migration bestehender Benutzer/innen aus einer vorhanden Serverinfrastruktur wird hier nicht beschrieben, weil sie zu individuell ist. Eine Migration kann bei dem IT-Dienstleister in Auftrag gegeben werden.

Container für Schüler/innen nach Jahrgängen anlegen

In der Benutzerverwaltungs-Software GOsa2 müssen vor dem Import der Schüler/innen-Daten noch die entsprechenden Orgainsationseinheiten (Operational Units=OU) angelegt werden. Um den administrativen Aufwand in den Folgejahren nach der Erstinstallation des Debian Edu / Skolelinux Servers möglichst gering zu halten, werden nicht Klassenstufen sondern die Zugangsjahre für einen Jahrgang als Organisationseinheiten angelegt.

In GOsa2 (2.6 bzw. 2.7):

Benutzerdaten bereitstellen

Das Schulsekretariat verwaltet in den Schulen die Daten der Schüler und Lehrer. Die folgenden Daten werden als Dateien in Tabellenform benötigt.

Schüler/innen:

Lehrer/innen:

Bei Erstinstallation des Debian Edu / Skolelinux Systems können die Daten per USB-Stick oder verschlüsselter Mail zur Verfügung gestellt werden. In Folgejahren kann ein/e Lehrer/in an der Schule die Daten auch im eigenen Benutzer/innen-Verzeichnis ablegen.

Benutzerdaten aufbereiten

Für den LDAP-Import aus CSV-Datei erwartet GOsa² das folgende CSV-Tabellenformat:

Folgende Spalten werden für den Import benötigt:

Schüler

Name

Vorname

(BenutzerID)

(Passwort)

Zugangsjahr

Klasse

Hauptbuchnummer

Bei Ersteinrichtung des Debian Edu / Skolelinux Systems wird für jeden Jahrgang eine .csv Datei angelegt. In Folgejahren, muss die Schule die jeweiligen Klassen 5 uns als .csv-Tabelle zukommen lassen. Alternativ kann der Benutzer/innen-Import auch selbst seitens der Schule vorgenommen werden.

Lehrer

Name

Vorname

BenutzerID

Passwort

Klasse

Fächerkombination

Import-Skript

Das folgende Skript kann in eine Datei im eigenen HOME kopiert werden (mittels copy+paste und Texteditor, z.Bsp. mit Namen import.sh).

Die Datei muss ausführbar gemacht werden (chmod a+x import.sh.

Danach kann die Datei mit

$ ./import.sh <csv-Datei>

Einschränkungen:

   1 #!/bin/bash
   2 
   3 if [ -z "$1" ]; then
   4         echo "usage $(basename $0) <csv-file>"
   5         exit -1
   6 fi
   7 
   8 FILENAME=$1
   9 IMPORTFILE=import_$FILENAME
  10 
  11 cat $FILENAME | while read line; do
  12 
  13         line=$(echo $line | sed -r -e 's/(.*[0-9]{1,2})\.(1|2)([a-z]{1};.*)/\1\3/g' -e 's/;/,/g')
  14 
  15         ALREADY_EXISTS="START"
  16 
  17         NACHNAME=$(echo $line | cut -d"," -f1 | cut -d " " -f1 | cut -d "-" -f1);
  18         VORNAME=$(echo $line| cut -d"," -f2 | cut -d " " -f1 | cut -d "-" -f1);
  19 
  20         i=3;
  21         while [ ! -z "$ALREADY_EXISTS" ]; do
  22                 NACHNAME_KURZ=${NACHNAME}
  23                 VORNAME_KURZ=${VORNAME}
  24 
  25                 LOGIN=$(echo ${NACHNAME_KURZ:0:$i}${VORNAME_KURZ:0:$i} | iconv -f UTF-8 -t ASCII//TRANSLIT | tr A-Z a-z);
  26 
  27                 ALREADY_EXISTS=$(getent passwd $LOGIN 1>/dev/null && echo "!!! ALREADY_EXISTS !!!");
  28                 if [ ! -z "$ALREADY_EXISTS" ]; then
  29                         LOGIN=$(echo ${NACHNAME_KURZ:0:$i}${VORNAME_KURZ:0:$((i+1))} | iconv -f UTF-8 -t ASCII//TRANSLIT | tr A-Z a-z);
  30                         ALREADY_EXISTS=$(getent passwd $LOGIN 1>/dev/null && echo "!!! ALREADY_EXISTS !!!");
  31                 fi
  32                 i=$(($i+1));
  33         done
  34 
  35         echo "${LOGIN},${NACHNAME},${VORNAME},`pwgen -v 12 1`,$(echo $line | cut -d"," -f3-)   $ALREADY_EXISTS";
  36 done | tee $IMPORTFILE
  37 
  38 echo
  39 
  40 DUPLICATES=`cat $IMPORTFILE | while read line; do
  41 
  42         LOGIN=$(echo $line | cut -d";" -f7);
  43         grep -v "$line" $IMPORTFILE | grep "$LOGIN" 1>/dev/null && echo "$LOGIN";
  44 
  45 done | uniq | sort`
  46 
  47 if [ ! -z "$DUPLICATES" ]; then
  48 
  49         echo "Doppelte Logins innerhalb dieser Liste:"
  50         echo
  51         echo -e $DUPLICATES | sed 's/ /\n/g'
  52         echo
  53 fi
  54 
  55 echo "Die Datei für den GOsa²-Import heißt \"$IMPORTFILE\"."
  56 echo

Dubletten bearbeiten

BenutzerIDs müssen eindeutig sein. Das obige Skript sollte selbiges bereits gut geprüft haben. Allerdings empfiehlt sich ein menschlicher Blick vor dem Import.

Doppelt vorkommende BenutzerIDs müssen also vor dem Import gefunden und verändert werden. Die Anpassung beginnen wir mit dem jüngsten Schüler bei dem eine Dublette in der BenutzerID vorliegt. Zur Anpassung werden schrittweise Buchstaben abwechselnd zunächst vom Nachnamen dann vom Vornamen ergänzt. Das Schema wird also von 3:3 auf 4:3, 4:4 etc erweitert bis alle Dubletten eliminiert sind.

Hinweis: Spaltenbearbeitung in der erstellten *.csv-Datei

Nach Erstellung des Datei durch das Script sollte die Spaltenreihenfolge für den Import angepasst werden wie folgt:

Login

Nachname

Vorname

Passwort

Import Schülerdaten

Die mittels Skript aufbereiteten Daten müssen nun noch in GOsa2 importiert werden.

Hierbei ist zu beachten:

GOsa² 2.7.x (Debian wheezy, jessie, stretch, buster, bullseye)

GOsa² 2.6.x (Debian squeeze)

Import Lehrerdaten

Die mittels Skript aufbereiteten Daten müssen nun noch in GOsa2 importiert werden.

Hierbei ist zu beachten:

Kennwortzettel Schülerdaten

Für das schnelle Erstellen von kleinen Kärtchen mit Kennwortdaten, haben wir das Tool credential-sheets entwickelt. Das Tool ist auf dem Hauptserver (TJENER) installiert.

Hinweise zur Verwendung, siehe hier.

IT-Zukunft Schule: Technik/Nutzungshinweise/BenutzerImport (zuletzt geändert am 2023-08-29 20:39:10 durch MikeGabriel)