Java 中有没有办法对 SRV 记录进行 Nslookup 搜索?
我需要绑定(bind)到 Active Directory,并希望使用 SRV 记录来帮助确定集群中的哪些 AD 处于 Activity 状态。
在命令行中,nslookup 搜索字符串为:'nslookup -type=srv _ ldap._tcp.ActiveDirectory 域名'
谢谢。
最佳答案
正如埃里克森指出的,JNDI API 有一个 provider for DNS using JNDI ,您可以在该链接上阅读有关内容。有关查询 _ldap._.tcp.mydomain.com
记录的工作示例,请参阅 this code from Hudson .
我相信,在使用 DNS 提供程序之前,您需要使用如下内容加载它(根据上面的 Hudson 代码修改):
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns:");
DirContext ctx = new InitialDirContext(env);
从那里您可以通过以下方式获取 SRV 记录:
Attributes attributes = ctx.getAttributes("_ldap._tcp.mydomain.com", new String[]{"SRV"});
Attribute a = attributes.get("SRV");
我已经成功地在几个项目中使用这样的代码来实现非常直接的 AD 集成。
关于java - 使用 Java 处理 'nslookup -type=srv',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695085/