2016-09-18 6 views
1

に私のldapsearchのすべてのDNを取得するにはどうすればLDAP内のすべての識別名(DN)を取得するには、次のコマンドを使用します。LinuxのシェルではJAVA

ldapsearch -x -b "" -H URL -D uid=administrator,cn=admins,cn=city -w PASS |grep dn: 

私の問題を:すべてのDNのJavaのように取得する方法上記のコマンドを使用しましたか?

+0

** ProcessBuilderを** JVM内で直接そのコマンドを実行します。それがあなたが求めているものなら。 – GhostCat

+0

ありがとう、しかし私は別の方法をしたい! –

+0

私は初心者が私たちが**あなた**ではないことを最初に理解しておきたいと思います。私たちはあなたのアイデアについて何も述べていないので、あなたが望むものを知ることはできません。 – GhostCat

答えて

1

Java Naming and Directory Interface (JNDI)を使用できます。

ここ

は、リンクされたチュートリアルからインスピレーションを得た例である:あなたは、Javaについて読ん

import javax.naming.*; 
import javax.naming.directory.*; 
import java.util.Hashtable; 

/** 
* Retrieves the DN from the search results 
*/ 
class FullName { 
    public static void printSearchEnumeration(NamingEnumeration retEnum) { 
    try { 
     while (retEnum.hasMore()) { 
     SearchResult sr = (SearchResult) retEnum.next(); 
     System.out.println(">>" + sr.getNameInNamespace()); 
     } 
    } 
    catch (NamingException e) { 
     e.printStackTrace(); 
    } 
    } 

    public static void main(String[] args) { 
    // Set up the environment for creating the initial context 
    Hashtable<String, Object> env = new Hashtable<String, Object>(11); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 

    env.put(Context.PROVIDER_URL, "ldap://localhost:389"); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, "uid=administrator,cn=admins,cn=city"); 
    env.put(Context.SECURITY_CREDENTIALS, "PASS"); 

    // Perform search in the entire subtree. 
    SearchControls ctl = new SearchControls(); 
    ctl.setSearchScope(SearchControls.SUBTREE_SCOPE); 

    try { 
     // Create initial context 
     DirContext ctx = new InitialDirContext(env); 

     NamingEnumeration answer = ctx.search("", null, ctl); 

     // Print the answer 
     printSearchEnumeration(answer); 

     // Close the context when we're done 
     ctx.close(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 
+0

私はすでにこのコードを使用しています。このエラーをJavaに渡します:javax.naming.NameNotFoundException:[LDAP:error code 32 - No such object];残りの名前 'ou = People' –

+0

これは別の問題です。コードとスタックトレースでこの問題に関連する質問を投稿することをお勧めします。ありがとう – EricLavault

+0

OK私はそれを実行します –

関連する問題