Использование 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/ и он сделал свою работу