Вопрос

Я пытаюсь создать сценарии/сервисы, которые позволяют пробудить ПК в домене Windows через WOL. Теперь я хочу дать пользователю возможность выбрать рекламный контейнер в качестве отправной точки для пробуждения ПК, содержащихся внутри. Моя первоначальная мысль заключается в использовании DHCP в качестве репозитория для запроса для MAC -адресов, учитывая имена хостов (которые я могу легко извлечь из AD, учитывая контейнер).

Есть ли способ программного запроса службы/сервера DHCP, передачи имени хоста и восстановить связанные MAC -адреса?

Или есть лучший/более простой способ решить мою проблему?

Это было полезно?

Решение

Пытаться dhcpexim.exe от Microsoft.

Или, если вы предпочитаете использовать чистый C. Dhcpenumsubnetclientsv4

Другие советы

Без проблем; Поскольку все машины находятся в вашем домене, вы можете собрать VBScript, который получит MacAddress (ES) от локальной машины и сохранить его в качестве атрибута компьютерного объекта в Active Directory.

Вот быстрый взлом о том, как это сделать (сохранить это как .vbs-file):

Option Explicit

Const ADS_PROPERTY_UPDATE = 2
Const COMPUTERLOCATION = "ou=Member Servers,dc=yourdomain,dc=com"
Const ATTRIBUTETOUSE = "otherTelephone"

Dim wshNetwork, strComputerName
Set wshNetwork = WScript.CreateObject("WScript.Network")
strComputerName = wshNetwork.ComputerName

Dim objWMIService, colNetCards, objComputer, objNetCard
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Set objComputer = GetObject("LDAP://cn=" & strComputerName & "," & COMPUTERLOCATION) 
For Each objNetCard in colNetCards
    objComputer.PutEx ADS_PROPERTY_APPEND, ATTRIBUTETOUSE, Array(objNetCard.MACAddress)
    objComputer.SetInfo
Next

Поскольку ваши клиенты не все в «серверах участников» выше, вам нужно изменить вышеупомянутый сценарий, чтобы включить Поиск каталогов для strComputerName Получите COMPUTERLOCATION.

Когда у вас есть рабочий сценарий, попросите администратора домена поместить скрипт в качестве сценария запуска, нацеленного на компьютеры, необходимые для отслеживания; Таким образом, он будет выполняться всякий раз, когда компьютер загружается. Вы также можете запустить скрипт в качестве запланированной задачи, чтобы получить ваши данные от любых клиентов, которые не перезагрузились или не использовали Psexec Или какой -то другой способ придумать, чтобы получить данные немедленно. Или вы можете полностью переписать сценарий для удаленного подключения ко всем вашим машинам и получить данные таким образом (что может быть невозможно из -за местных брандмауэров). Или вы можете написать небольшое приложение для консоли .NET, которое делает то же самое, это зависит от вас ...

Кроме того, хотя есть networkAddress-attribute определено для компьютерных объектов; По умолчанию сам компьютерный объект не имеет доступа к записи в это свойство. Потому что начальные подписания запускаются в контексте SYSTEM Учетная запись на конкретной машине. Самая легкая вещь - использовать атрибут, который компьютерный объект (SELF) имеет доступ к записи. А otherTelephone-tribute многоцелевой и часть Набор свойств персональной информации которые все компьютерные объекты имеют доступ к записи по умолчанию. Если вы хотите использовать networkAddress-attribute Вам необходимо установить явный доступ к записи на этот атрибут для всех ваших компьютеров.

Кроме того, вам нужно помнить, что хранение MAC -адреса в Active Directory означает, что все пользователи в вашем домене будут иметь доступ к нему, который, в свою очередь, может (в зависимости от вашей среды) представляет небольшой риск безопасности.

Сделать это так, как сеть.

Схватить Sharppcap (Обертка PCAP для C#) и WinPCAP (Windows) или LibpCap (*NIX). Напишите приложение, которое создает пакеты SNMP, чтобы запросить таблицу ARP на маршрутизаторе.

Примечание. Таблица ARP (протокол разрешения адреса) - это таблица, содержащая отображение IP -адреса с MAC -адресом.

Я думал о реализации примера, который делает это в последнее время, но у меня еще нет того, чтобы показать. Как только я это сделаю, я позабочусь о том, чтобы он был добавлен в примеры SharppCAP, найденные в исходном дереве проекта.

Это немного дурацкое, кажется, что нет возможности программно запросить сервер DHCP. Спасибо Коттсаку за задание вопроса. Я понимаю, что протокол DHCP не имеет такого запроса, но я думал, что Mayb, исполняемый из Microsoft, может иметь какую -то способ обратиться к нему из командной строки. Я нигде не слышал, чтобы никто не говорил, что такого случая нет, но это должно быть так.

Ого, подождите минуту ... Я думаю, что я нашел то, что мы ищем: Netsh. CF:

http://social.technet.microsoft.com/forums/en/itcg/thread/afb4be16-09bd-4260-b515-8323d85d4ccb

Где он написал, если вы откроете командную строку на сервере DHCP, вы можете запустить эту команду:

Netsh DHCP Server Server 192.168.1.0 Показать клиенты

И получить такой отчет:

10.10.98.53-255.255.255.0 -00-0C-29-02-A4-09-никогда не истекает -d 10.10.98.54-255.255.255.0-00-22-19-10-29-75 -1/21/2012 8 : 39: 25 утра -Д

Yippeee! Спасибо за ветку !! Если бы не это было бы для этого, я бы сузил бы свой поиск, чтобы Technet Adn нашла это.

Вы не можете сделать это с DHCP. DHCP атрибуты IP с Mac, а не наоборот. ARP - это то, что преобразует IP в Mac, но сама машина отвечает ARP, поэтому, если он выключен, он, очевидно, не ответит ...

Я предлагаю вам хранить Mac в вашем объявлении напрямую (я думаю, объявление поддерживает пользовательские атрибуты?)

Вам нужно использовать ARP, чтобы получить MAC -адрес, и сделать это в C - долгий процесс.

MAC -адреса жестко закодированы, поэтому, если у вас есть компьютеры x, идут и получают X MAC -адреса и привяжите их к объявлению.

Обратите внимание, что компьютер должен быть включен, чтобы запросить его MAC -адрес.

Поиск MAC -адреса с IP -адреса

Да, Dun беспокоитесь об этом, вы можете вытащить эту информацию прямо из DHCP, если у ПК есть аренда.

Знаете, как вы щелкните правой кнопкой мыши и добавляете бронирование в DHCP?

Посмотрите в DHCP для «уникального идентификатора». Это MAC -адрес, без Колонов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top