Export der Schülerdaten mit Schüler-ID, Benutzername

Hallo zusammen,

wir importieren bei den Schülern immer zusätzlich eine Schüler-ID. Für externe Dienste sollen SuS denselben Benutzernamen erhalten. Bisher habe ich immer die csv aus dem Listenimport (Klasse, Name, Vorname, Geburtsdatum, Schüler ID) kopiert und die csv-Datei aus dem Passwortdruck genommen und beides Nach Namen sortiert und zusammenkopiert.

Gibt es eine Möglichkeit Klasse, Name, Vorname, Geburtsdatum, Schüler ID und Benutzername gemeinsam zu exportieren - vielleicht mit einem angepassten sophomorix-print?

Danke und beste Grüße
Fabian

sophomorix-print legt immer mehrere Dateien an. hast du da schon geschaut ob da eine passt?

Hallo Rüdiger,
genau eine dieser Dateien nutze ich; allerdings fehlt dort die Schüler-ID. Ich habe bei sophomorix-print auch keinen Schalter gefunden, um diese extra-Felder mit zu exportieren.

Hi.
Über einen kleinen Umweg gelangt man mit ldapsearch ans Ziel. So eine Liste ist auch hier absolut notwendig, da man nur so eine eindeutige Zuordnung von
Name, Vorname <-> Login hinbekommen kann!

Die Programme aus der Verwaltung kennen ja nicht den Login sondern lediglich die ID. Für diverse Listen (z.B. globale Gruppen für moodle uvm.), benötigt man aber den Login des Schülers, so dass man immer wieder vor der Aufgabe steht, wie man aus
Max,Mustermann,12345678
ein
musmax, 12345678
machen kann! Leider liefert ein sophomorix-print nicht die erforderliche Information, da die Schüler-ID nicht mit ausgegeben wird. Dort erhält man lediglich die Felder
Vorname Nachname;Klasse;Login;Passwort; und das Feld ID fehlt hier!!

Der Befehl lautet so:

ldapsearch  -b "ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=lan" -H ldaps://server.linuxmuster.lan:636 -x -D global-binduser@linuxmuster.lan -w super-geheimes-Passwort '(&(!(sophomorixAdminClass=attic))(sophomorixRole=student))' displayName sAM
AccountName sophomorixUnid |grep -e displayName: -e sAMAccountName: -e sophomorixUnid:

Das liefert schon mal eine Liste (raw!) mit den benötigten Infos aller Schüler!
Das kann man natürlich mit sed/awk weiter pipen lassen …
hth,
Michael

Nachtrag:

Übersichtlich bekommt man es hin, wenn man die Ausgabe von ldapsearch z.B. so in die Pipe umleitet:

|grep -e sn: -e givenName: -e sAMAccountName: -e sophomorixUnid: | sed '0~4 a\\'

Alles in eine Zeile geht natürlich auch:

|grep -e sn: -e givenName: -e sAMAccountName: -e sophomorixUnid: | awk '{printf $2";"}'

… und die vier benötigten Einträge jeweils in einer Zeile dann so:

|grep -e sn: -e givenName: -e sAMAccountName: -e sophomorixUnid: | awk '{printf $2";"}  NR%4==0 {printf"\n"} '

Bei den Lehrern gibt es ja keine ID … da muss man sich offenbar anders helfen. Die Identifikation von Name <-> Login ist hier aber auch nicht so ein großes Problem, da die Wahrscheinlichkeit für identische Namen weitaus geringer ist.
Man kann sich damit helfen, indem man die ldapsearch-Anweisung geringfügig ändert und aus student einfach teacher macht … oder noch kürzer so:

cat /etc/linuxmuster/sophomorix/default-school/teachers.csv |awk -F ";" '{print $2";"$3";"$5";"}'

hth,
Michael

Ich werde den export der ID bei den bisherigen exporten ergänzen.
gemeint ist sicher der Inhalt des attributs sophomorixUnid, oder?

Hallo Rüdiger,

wenn sophomorixUnid den Inhalt aufnimmt von der SchülerID aus der schueler.csv, dann ja!

Danke für deine Arbeit.

Beste Grüße

Thorsten

Ja, genau, das fünfte Feld wird zur sophomorixUnid.

1 „Gefällt mir“

Paket ist in lmn7-testing: 3.81.8-1

1 „Gefällt mir“

Hallo noch einmal zu diesem Thema,

könnte Zeile 706 in sophomorix-print, also
my $csv=$data[1]." ".$data[0].";".$data[5].";".$data[2].";".$data[3].";".$data[10].";";
noch geändert werden in
my $csv=$data[0].";".$data[1].";".$data[5].";".$data[2].";".$data[3].";".$data[10].";";
?
Bei Schülern mit mehreren Vornamen und Nachnamen kann man Vor- und Nachname nicht einzeln aus der CSV extrahieren. Falls der vollständige Name benötigt wird, schlage ich
my $csv=$data[1]." ".$data[0].";".$data[5].";".$data[2].";".$data[3].";".$data[0].";".$data[1].";".$data[10].";";
vor. Dann wäre wirklich alles enthalten.

Ist --caller nur für den Namen der Datei entscheidend, und -caller-copy kopiert die Dateien zusätzlich in Home auf Server? Ich frage nur, weil dazu nichts in der --help steht.

Danke und beste Grüße
Fabian