Использование Java для 'nslookup -type = srv' - PullRequest
0 голосов
/ 23 апреля 2010

Есть ли в Java способ поиска Nslookup по записям SRV?

Мне нужно привязаться к Active Directory и хотел бы использовать записи SRV, чтобы определить, какие из AD в кластере являютсяlive.

В командной строке строка поиска nslookup выглядит так: 'nslookup -type = srv _ ldap._tcp.ActiveDirectory domain name'

Спасибо.

Ответы [ 3 ]

2 голосов
/ 23 апреля 2010

Как указал Эриксон, в JNDI API есть поставщик для DNS, использующий JNDI , о котором вы можете прочитать по этой ссылке. Для рабочего примера запроса запись _ldap._.tcp.mydomain.com, см. этот код от Hudson .

Я считаю, что перед использованием DNS-провайдера вам необходимо загрузить его с чем-то вроде этого (модифицированным из кода Хадсона выше):

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.

0 голосов
/ 22 января 2012

Я использовал http://www.dnsjava.org/, и он сделал свою работу

0 голосов
/ 23 апреля 2010

Я никогда не использовал его, но я считаю, что у Java "JNDI" API для служб имен есть провайдер для DNS. Найдите доменное имя как DirContext, а затем проверьте его атрибуты "SRV".

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

Как я уже сказал, я не экспериментировал с этим, но надеюсь, что это поможет вам начать.

...