18c0693f

Использование Net DNS



Использование Net::DNS

Как уже говорилось в главе 1, одна из сильных сторон Perl заключается в поддержке обширным сообществом разработчиков, создающих программы, которые могут применяться другими людьми. Если необходимо сделать на Perl нечто, на ваш взгляд, универсальное, то высока вероятность того, что кто-то уже написал модуль для работы с подобной проблемой. В данном случае можно воспользоваться отличным модулем Net: :DNS Майкла Фура (Michael Fuhr), который упростит работу. Чтобы справиться с нашей задачей, необходимо создать новый объект, передать ему имя DNS-сервера, к которому следует обратиться, указать, что нужно послать запрос, и затем применить имеющиеся методы для анализа ответов:

use Net::DNS;

&lookupaddress($hostname,$server); # заполняем значениями %results }

%inv = reverse %results; » инвертируем полученный хэш if (scalar(keys %inv) > 1) { tt проверяем, сколько в нем элементов

print "Между DNS-серверами есть разногласия:\п";

use Data:: Dumper;

print Data::Dumper->Dump([\%results],["results"]),"\n"; }

tt всего лишь несколько измененный пример из страниц руководства по Net::DNS sub lookupaddress{

my($hostname,$server) = @_;

$res = new Net::DNS::Resolver; $res->nameservers($server); Spacket = $res->query($hostname);

if (!$packet) {

warn "Невозможно получить данные о Shostname с $server!\n";

return; }

# сохраняем последний полученный ответ RR foreach $rr ($packet->answer) {

$results{$server}=$rr->address;

}

}

Преимущества такого подхода:

Недостатки данного подхода:

В большинстве случаев я предпочитаю использовать уже существующие модули. Тем не менее, для выполнения поставленной задачи подойдет любой подход. Существует несколько способов сделать одно и то же - значит, вперед, действуйте!





Все публикации раздела