以下是将上述命令转换为Java代码的示例:

import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

public class LdapSearchExample {

  public static void main(String[] args) {
    String ldapUrl = "ldap://ldap.example.com";
    String baseDn = "cn=subschema";
    String objectClassesAttr = "objectclasses";

    Hashtable<String, String> env = new Hashtable<>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapUrl);
    env.put(Context.SECURITY_AUTHENTICATION, "none");

    try {
      DirContext ctx = new InitialDirContext(env);

      SearchControls searchControls = new SearchControls();
      searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);

      String[] returnAttributes = { objectClassesAttr };
      searchControls.setReturningAttributes(returnAttributes);

      NamingEnumeration<SearchResult> results = ctx.search(baseDn, "(objectclass=*)", searchControls);

      if (results.hasMore()) {
        SearchResult result = results.next();
        Attribute objectClasses = result.getAttributes().get(objectClassesAttr);

        if (objectClasses != null) {
          NamingEnumeration<?> values = objectClasses.getAll();

          while (values.hasMore()) {
            System.out.println(values.next());
          }
        }
      }

      ctx.close();
    } catch (NamingException e) {
      e.printStackTrace();
    }
  }
}

请注意:在此示例中,我们使用 com.sun.jndi.ldap.LdapCtxFactory 作为初始上下文工厂。这是Java默认提供的实现。如果您使用不同的LDAP库,则需要相应地更改上下文工厂类。

ldapsearch -H -x -s base -b cn=subschema objectclasses 转成java代码

原文地址: https://www.cveoy.top/t/topic/bZNo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录