Hallo.
Nach längere Pause melde ich mich mal wieder mit einer Frage:
Ich frage das Active Directory des lmn7-Servers per ldapsearch mit Parametern wie diesen ab, um eine Liste von Schülern mit den Feldern
Vorname; Nachname; Login; Klasse;
zu bekommen:
ldapsearch -b $base -H $server -x -D $binduser -w $bindpw
'(&(!(sophomorixAdminClass=attic))(|(sophomorixRole=student)))'
| grep -e sophomorixFirstnameASCII:
-e sophomorixSurnameASCII:
-e sAMAccountName:
-e sophomorixAdminClass:
| awk '{printf $2";"} NR%4==0 {printf"\n"}'
| sort -n
Das funktioniert auch – aber leider ist die Sortierung/Ausgabe nicht zu 100% zuverlässig.
Bei den meisten Usern bekomme ich diese Reihenfolge
sAMAccountName:;sophomorixFirstnameASCII:;sophomorixSurnameASCII:;sophomorixAdminClass:;
aber bei einigen anderen sieht das leider so aus:
sAMAccountName:;sophomorixAdminClass:;sophomorixFirstnameASCII:;sophomorixSurnameASCII:;
Ich weiß nicht, woran das liegt. Diese User sind alle erst später dazu gekommen, denn sie befinden sich durchgängig in Klasse 5 – also alle neu hinzugekommen im letzten Jahr und nicht durch die Migration von v6 → v7 ins System gelangt!
Ich benötige natürlich immer das gleiche Ausgabeformat, damit die Weiterverarbeitung der CSV-Datei zuverlässig funktioniert.
Der awk-Befehl sortiert die Ausgabe von ldapsearch so um, dass alles in einer Zeile erfolgt, doch innerhalb dieser Zeile müsste das offenbar nochmal zuverlässig nach den o.g. Kriterien sortiert werden??
Hat jemand eine gute Idee, wie man das hinkriegen kann?
Danke.
Viele Grüße,
Michael