Tobias
1. April 2020 um 21:46
1
Hi zusammen,
nach einigem knobeln habe ich einen Filter gefunden, der mit (STand jetzt) den FEldern des AD arbeitet und
Schüler, Lehrer, Klassen und Projekte wiedergibt
Administratoren, Computer + Räume, seltsame Einträge ausklammert
Personen ausklammert, die schon gelöscht wurden (im Dachboden verharren)
(&(!(sophomorixAdminClass=attic))(|(sophomorixRole=teacher)(sophomorixRole=student)(sophomorixType=adminclass)(sophomorixType=project)))
oder auseinander geschrieben, damit man die Notation versteht:
(&
( ! (sophomorixAdminClass=attic) )
(
| (sophomorixRole=teacher)
(sophomorixRole=student)
(sophomorixType=adminclass)
(sophomorixType=project)
)
)
was soviel bedeutet, wie: alle die nicht auf dem DAchboden leben und alle die entweder die Rolle Lehrer oder die Rolle Schüler oder den Typ adminclass oder den Typ Projekt haben.
der Username ist ja im Feld sAMAccountName
versteckt
Ich bin mir ziemlich sicher, dass der eine oder andere das bei seinen externen Anbindungen brauchen kann.
Eine Abfrage, der von allen obigen Personen, Klassen und Projekte den loginnamen anzeigt wäre:
LDAPTLS_REQCERT=ALLOW ldapsearch -H ldaps://server.linuxmuster.meine-schule.de:636 -D global-binduser@linuxmuster -b "DC=linuxmuster,DC=meine-schule,DC=de" -x -W '(&(!(sophomorixAdminClass=attic))(|(sophomorixRole=teacher)(sophomorixRole=student)(sophomorixType=adminclass)(sophomorixType=project)))' samAccountName
VG, Tobias
2 „Gefällt mir“
Michael
12. September 2020 um 15:28
2
Hallo Tobias.
Ich habe deinen Filter gerade verwendet, um eine Liste zu generieren, die NUR den Login und die eindeutige Schüler-ID ausspuckt. Das funktioniert mit deinem Befehlt von oben z.B. so:
'(&(!(sophomorixAdminClass=attic))(|(sophomorixRole=student)))' |grep -e sAMAccountName -e sophomorixUnid | awk '{ ORS=/sAMAccountName:/ ?"":"\n"} {print $2";"}'
Kann sein, dass es auch viel einfacher geht – aber funktioniert.
VG,
Michael
1 „Gefällt mir“
Hallo Michael,
es hängt ein wenig davon ab, was genau Du als Output willst.Folgende Ideen:
Das Oder, also | ist bei nur einem Input überflüssig.
Anstatt des grep-Befehls kannst Du auch direkt die Ausgabe auf einzelne Attribute beschränken
Eventuell ist cut einfacher als awk
Insgesamt:
‚(&(!(sophomorixAdminClass=attic))(sophomorixRole=student))‘ sAMAccountName sophomorixUnid | cut -d “-“ -f 2
Ich hoffe, der Mail-Import verstümmelt das nicht allzu sehr.
Beste Grüße
Jörg
1 „Gefällt mir“
Michael
12. September 2020 um 17:00
4
Ja, ich hatte die anderen Attribute gelöscht…
Eigentlich wollte ich bei den „Nicht“ (!) Attributen ein zweites haben – aber das wollte bisher nicht
Deine Abfrage funktioniert auch – liefert aber mehr Output als meine. Ich habe sofort eine csv, wo NUR noch Login; ID; drin steht…
Hallo Jörg!
Mit
[code] ...
[/code]
sollte das nicht passieren.
Beste Grüße
Thorsten
Hallo Thorsten,
danke für den Tipp! Hier also eckige Klammern, überall sonst spitze -
muss man nicht verstehen.
Beste Grüße
Jörg