Perl для системного администрирования


Служба доменных имен (DNS) - часть 17


  • Он не зависит от каких-либо других программ. Нет необходимости разбираться в работе других людей.
  • Это настолько же быстро, а может быть, и еще быстрее, чем вызов внешней программы.
  • Проще обработать параметры ситуации (тайм-ауты и прочее). Недостатки же такого подхода в том, что:
  • Для написания подобной программы понадобится больше времени и, кроме того, она сложнее предыдущей.
  • Этот подход требует дополнительных знаний, не имеющих прямого отношения к вашей задаче (т. е. вам, возможно, потребуется узнать, как вручную собирать DNS-пакеты, чего при использовании nslookup знать было не нужно).
  • Вам, вероятно, придется самостоятельно справиться с различиями между операционными системами (в предыдущем подходе они были скрыты благодаря тому, что эту работу выполнил автор внешней программы).

Использование 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) = @_;




- Начало -  - Назад -  - Вперед -



Книжный магазин