Использование Java для 'nslookup -type=srv'

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

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

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

Благодарю.

3 ответа

Решение

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

Я считаю, что перед использованием 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.

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

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

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

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

Другие вопросы по тегам