Запрос для компьютеров в домене, которые находятся в сети - PullRequest
1 голос
/ 21 июля 2009

Там, где я работаю, мы используем программное обеспечение под названием Dameware для удаленного управления компьютерами в нашем домене. Через Dameware мы можем получить список всех компьютеров, которые подключены к сети и в настоящее время подключены к домену.

Мы внедряем новое программное обеспечение для управления рабочим столом, которое не предоставляет нам эту функцию. Нам нужно знать имя компьютера, когда мы хотим подключиться к нему.

Я знаю, как получить список компьютеров, которые принадлежат домену, но который также возвращает компьютеры, которые могут быть или не быть в сети. Как вернуть список компьютеров, которые в настоящее время подключены (т. Е. Имеют активное сетевое подключение) к домену? Я думал о том, чтобы вернуть список компьютеров, которые принадлежат домену, и затем пропинговать каждый из них, но я думаю, что это будет медленным и полной тратой ресурсов.

Я бы предпочел решение .NET, но скрипт VB тоже подойдет. Я могу закончить создание графического интерфейса для этого, который я бы раздал членам нашей ИТ-команды.

Ответы [ 3 ]

1 голос
/ 01 сентября 2009

Ну, пинг действительно может работать.

Я работаю над библиотекой scapy, которая является библиотекой python для создания пакетов TCP / IP. Я имел обыкновение пинговать подсеть как 192.168.1.0/24. Я пробовал много видов пингов - ARP, ICMP, TCP.UDP. Результаты были шокирующими -

  • Пинг TCP и UDP занимает всю жизнь вернуть все ответы
  • ICMP также занимает меньше времени, но все же Мне пришлось ждать 40 или более
  • Пинг ARP был лучшим. Потребовалось не более 2-3 секунд, чтобы вернуть ответ. Вы можете попробовать это и сказать мне каковы ваши переживания

Для этого следует использовать класс Ping .NET .

Вы должны даже проверить этот вопрос на переполнение стека


Библиотека ARP для .NET

На данный момент я понятия не имею, дает ли .NET абстракцию ARP, но ее можно использовать через iphlpapi.dll

Эта DLL имеет функцию с именем SendARP, имеющую подпись

int SendARP (int DestIP, int SrcIP, byte [] pMacAddr, refyint PhyAddrLen);

Вам следует проверить на этой странице, чтобы получить больше примеров , а также прочитать о iphlpapi.dll

0 голосов
/ 22 июля 2009

Как найти все компьютеры, использующие NetServerEnum ?
В любом случае я предлагаю вам не беспокоиться о том, какой компьютер находится в сети, поскольку это может измениться к тому времени, когда пользователь / приложение попытается действовать на этом компьютере.

0 голосов
/ 21 июля 2009

Можете ли вы установить на каждом компьютере приложение монитора, которое посылает пульс в центральную БД? Затем вы можете делать запросы из БД, отслеживать дополнительную статистику и т. Д., Имея небольшое приложение на каждом компьютере.

Таким образом, вы распределяете стоимость хранения статуса из вашего инструмента мониторинга на каждую машину, получаете возможность вести историю (какие машины были в какое время и т.д. и т. Д.) И упрощаете свой инструмент мониторинга, чтобы просто выполнить быстрый запрос на БД вместо выполнения пингов на каждой машине

Кроме того, у меня были проблемы с некоторыми машинами, которые не реагировали на эхо-запросы в зависимости от настроек брандмауэра (спасибо Windows XP с включенным брандмауэром).

Наконец, хорошо то, что вы можете заменить свой пользовательский интерфейс, чтобы использовать все, что вы хотели (C #, веб-страница и т. Д.).

...