У меня есть сервер Windows, который периодически теряет возможность поиска информации DNS. Я пытаюсь найти основную причину проблемы, но пока я хотел бы иметь возможность отслеживать, может ли сервер выполнять поиск.

По сути, он должен попытаться найти некоторые общие имена хостов и отобразить «Успех», если поиск был успешным.

На сайте работает PHP, поэтому я бы предпочел, чтобы сценарий монитора был на PHP, но если кто-то знает, как это сделать в ASP / .Net, это тоже сработает.

5
Dave Forgac 11 Июл 2009 в 16:40

4 ответа

Лучший ответ

http://www.php.net/manual/en/function .dns-get-record.php - это функция на php, которая звучит так, как будто вам нужна.

7
Rodney Amato 11 Июл 2009 в 12:43

«Ping» всегда выполняет поиск в DNS (как в прямом, так и в обратном направлении) перед тем, как пинговать нужное имя хоста. Написание сценария оболочки для использования ping (или dig), чтобы увидеть, работает ли ping ненадежно, оставлено читателю в качестве упражнения.

Другой вариант - использовать кэширующий DNS-сервер на локальном компьютере, который кэширует ответы от вышестоящего DNS-сервера и отправляет данные из кеша, когда восходящий поток не работает. Мой собственный Deadwood - это крошечный двоичный файл 32k Windows или UNIX, который может это сделать (64k, если вы хотите полную рекурсию DNS)

0
samiam 1 Авг 2010 в 10:49

Но есть небольшое ограничение этой функции - Журнал изменений: v. PHP 5.3.0 - Эта функция теперь доступна на платформах Windows.

Если вы не хотите обновлять php на IIS. есть еще одна альтернатива: выполнение dig для двоичного файла Windows. вот поиск окон. вам также может понадобиться это для себя, а не для какой-либо программы. это выходит за рамки старой команды nslookup.

0
risyasin 11 Июл 2009 в 13:08

В Windows функции PHP DNS изначально недоступны до версии PHP 5.3. Вам понадобится класс Pear Net_DNS. http://pear.php.net/package/Net_DNS

Пример использования:

require_once 'Net/DNS.php';

$resolver = new Net_DNS_Resolver();
$resolver->debug = $this->debug;
// nameservers to query
$resolver->nameservers = array('192.168.0.1');
$resp = $resolver->query($domain, 'A');

Источник: http: //code.google.com/p/php-smtp-email-validation/source/browse/trunk/smtp_validateEmail.class.php#232

2
bucabay 11 Июл 2009 в 13:12