转到 LDAP 搜索 ContextCSN
Go LDAP search for ContextCSN
晚上好,
我比较新,尝试编写一个从 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)
将其留空或更改适合您的过滤器
晚上好,
我比较新,尝试编写一个从 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)
将其留空或更改适合您的过滤器