Sziasztok!
Bár tudom, hogy a leadási határidőn túl vagyunk, van egy kérdés, ami akkor sem hagy nyugodni, muszáj megkérdeznem, hátha tudja valaki rá a választ. :D
Van a Projects
részfán belül a Projectsstaff
entry, amire bár a gyakorlaton megbeszéltük, hogy nincs szükség, mégis kísérletezés gyanánt bent hagytam, pont azért, hogy "foolproofabbá" tudjam tenni a lekérdezéseimet.
Lényeg röviden (TL;DR):
Az (&(objectClass=top)(objectClass=groupOfNames))
filter hatástalan; azokat az elemeket is kilistázza (most konkrétan csak egyet, a Projectsstaff
entry-t), amelyeknél csak objectClass=groupOfNames
tulajdonság van jelen, az objectClass=top
NINCS.
Miért?
Szépen kifejtve, screenshotokkal
Itt látszik a Projectsstaff entry:
Látható, hogy itt jelen van az objectClass=groupOfNames
attribútum-érték páros, de az objectClass=top
NEM.
Akármelyik másik projekthez tartozó entry-t megnézzük, annál jelen van mindkettő attribútum-érték páros, vagyis az objectClass=groupOfNames
ÉS az objectClass=top
is:
És akkor most arra szeretném szűrni a **Projects
részfát, hogy csak azokat a bejegyzéseket listázza ki, amelyeknél mindkettő említett attribútum jelen van**, ezért készítek egy filtert:
search base:
ou=Projects,dc=irf,dc=local
filter:
(&(objectClass=top)(objectClass=groupOfNames))
magyarul ÉS-kapcsolat van a kettő közt:
Ennek ellenére az eredménylistában mégis látszik a Projectsstaff, pedig nála nincs jelen az objectClass=top
tulajdonság!
Lásd itt:
Python-kóddal próbáltam, ugyanez a helyzet (mondjuk nem túl meglepő).
Abban az esetben működik csak az, hogy kiszűrjem a találatokból a Projectsstaff
entry-t, ha kiszűröm a member=cn=nobody,dc=irf,dc=local
tulajdonsággal rendelkezőeket...
Tehát így néz ki a filter:
(&(!(member=cn=nobody,dc=irf,dc=local))(&(objectClass=top)(objectClass=groupOfNames)))
Szebben formázva:
(&
(!(member=cn=nobody,dc=irf,dc=local))
(&
(objectClass=top)
(objectClass=groupOfNames)
)
)
Esetleg Python-kódból:
projectNames = conn.search("ou=Projects,dc=irf,dc=local", 1,
"(&(!(member=cn=nobody,dc=irf,dc=local))(&(objectClass=top)(objectClass=groupOfNames)))",
['cn'])
Na de miért nem megy az elvártak szerint az első filterrel, vagyis simán csak azzal, hogy (&(objectClass=top)(objectClass=groupOfNames))
?
Tudom, hogy hosszú lett így képekkel a kérdés, de hátha mégis van valakinek türelme hozzá. Előre is köszi!