Go LDAP search for ContextCSN



晚上好,我相对较新,尝试编写一个从OpenLDAP目录导出ContextCSN变量的函数(类似于ldapsearch -x -s base contextCSN(从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,
)

,但它不接受contextsn作为搜索词

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(,您想查询

将其清空或更改您的过滤器,因为它适合您