に私のldapsearchのすべてのDNを取得するにはどうすればLDAP内のすべての識別名(DN)を取得するには、次のコマンドを使用します。LinuxのシェルではJAVA
ldapsearch -x -b "" -H URL -D uid=administrator,cn=admins,cn=city -w PASS |grep dn:
私の問題を:すべてのDNのJavaのように取得する方法上記のコマンドを使用しましたか?
に私のldapsearchのすべてのDNを取得するにはどうすればLDAP内のすべての識別名(DN)を取得するには、次のコマンドを使用します。LinuxのシェルではJAVA
ldapsearch -x -b "" -H URL -D uid=administrator,cn=admins,cn=city -w PASS |grep dn:
私の問題を:すべてのDNのJavaのように取得する方法上記のコマンドを使用しましたか?
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();
}
}
}
私はすでにこのコードを使用しています。このエラーをJavaに渡します:javax.naming.NameNotFoundException:[LDAP:error code 32 - No such object];残りの名前 'ou = People' –
これは別の問題です。コードとスタックトレースでこの問題に関連する質問を投稿することをお勧めします。ありがとう – EricLavault
OK私はそれを実行します –
** ProcessBuilderを** JVM内で直接そのコマンドを実行します。それがあなたが求めているものなら。 – GhostCat
ありがとう、しかし私は別の方法をしたい! –
私は初心者が私たちが**あなた**ではないことを最初に理解しておきたいと思います。私たちはあなたのアイデアについて何も述べていないので、あなたが望むものを知ることはできません。 – GhostCat