【问题标题】:Using Java for 'nslookup -type=srv'将 Java 用于“nslookup -type=srv”
【发布时间】:2010-04-22 22:54:48
【问题描述】:

Java 中有没有办法对 SRV 记录进行 Nslookup 搜索?

我需要绑定到 Active Directory,并希望使用 SRV 记录来帮助确定集群中哪些 AD 处于活动状态。

在命令行中,nslookup 搜索字符串为:'nslookup -type=srv _ ldap._tcp.ActiveDirectory 域名'

谢谢。

【问题讨论】:

    标签: java active-directory nslookup srv


    【解决方案1】:

    正如 erickson 指出的,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 集成。

    【讨论】:

      【解决方案2】:

      我从未使用过它,但我相信用于命名服务的 Java 的 "JNDI" API 有一个 DNS 提供程序。将域名查找为DirContext,然后检查其“SRV”属性。

      DirContext ctx = new InitialDirContext();
      Attributes attrs = ctx.getAttributes("dns:/y.com", new String[] {"SRV"});
      

      就像我说的,我没有尝试过这个,但我希望它可以帮助你开始。

      【讨论】:

        【解决方案3】:

        我使用了http://www.dnsjava.org/,它完成了工作

        【讨论】:

          猜你喜欢
          • 2012-08-31
          • 2023-03-20
          • 2017-07-28
          • 1970-01-01
          • 1970-01-01
          • 2020-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多