晚上好,
我相对较新,尝试编写一个函数从openldap目录中导出contextCSN变量(类似于ldapsearch -x -s base contextCSN
)
从of ldap.v2文档中,我想到了这个:
searchRequest := ldap.NewSearchRequest(
baseDN, // The base dn to search
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
"(contextCSN)", // The filter to apply
[]string{"contextCSN"}, // A list attributes to retrieve
nil,
)
但是它不接受contextCSN作为搜索词
LDAP Result Code 201 "Filter Compile Error": ldap: error parsing filter
exit status 1
有没有一种方法可以在不调用ldapsearch的情况下查询该值?
更新:
盯着ldapsearch的输出一段时间后,我想到了这一点,这确实解决了问题。数据结构有点丑陋,但可以提供我所需的信息:
l, err := ldap.DialTLS("tcp", ldapHost, conf)
if err != nil {
log.Fatal(err)
}
defer l.Close()
searchRequest := ldap.NewSearchRequest(
baseDN, // The base dn to search
ldap.ScopeBaseObject, ldap.NeverDerefAliases, 0, 0, false,
"(objectClass=*)", // The filter to apply
[]string{"contextCSN"}, // A list attributes to retrieve
nil,
)
sr, err := l.Search(searchRequest)
if err != nil {
log.Fatal(err)
}
for _, entry := range sr.Entries {
for _, csn := range entry.GetAttributeValues("contextCSN") {
...
}
}
最佳答案
(contextCSN)不是过滤器,应该是您要查询的类似(sn =%s)的东西
将其保留为空或根据需要更改过滤器
关于go - LDAP搜索ContextCSN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49020540/