LDAP: Filtersyntax für die v7

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“

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“

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