سؤال

أحاول إنشاء البرامج النصية/الخدمات التي تسمح باستيقاظ أجهزة الكمبيوتر في مجال Windows عبر WOL. الآن أريد أن أعطي المستخدم خيار تحديد حاوية إعلانية كنقطة انطلاق للاستيقاظ من أجهزة الكمبيوتر الموجودة في الداخل. تفكيري الأولي هو استخدام DHCP كمستودع للاستعلام عن عناوين MAC بالنظر إلى أسماء المضيف (والتي يمكنني بسهولة السحب من الإعلان بالنظر إلى الحاوية).

هل هناك طريقة للاستعلام برنامجياً لخدمة/خادم DHCP ، وتمرير أسماء المضيف واستعادة عناوين MAC المرتبطة بها؟

أم أن هناك طريقة أفضل/أسهل لحل مشكلتي؟

هل كانت مفيدة؟

المحلول

محاولة dhcpexim.exe من Microsoft.

أو ، إذا كنت تفضل استخدام Pure C. dhcpenumsubnetclientsv4

نصائح أخرى

لا مشكلة؛ نظرًا لأن جميع الآلات موجودة في مجالك ، يمكنك تجميع VBScript الذي سيحصل على Macaddress (ES) من الجهاز المحلي وتخزينه كسممة لكائن الكمبيوتر في Active Directory.

إليك اختراق سريع لكيفية القيام بذلك (احفظ هذا كملف .vbs):

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

نظرًا لأن عملائك ليسوا جميعًا في "خوادم الأعضاء" OU أعلاه ، فستحتاج إلى تعديل البرنامج النصي أعلاه لتضمينه بحث الدليل ل strComputerName هل تحصل على COMPUTERLOCATION.

عندما يكون لديك برنامج نصي عمل ، اطلب من مسؤول المجال وضع البرنامج النصي كخط نصي لبدء يستهدف أجهزة الكمبيوتر التي تحتاج إلى مراقبتها ؛ وبهذه الطريقة ، سيتم تنفيذها كلما قام الكمبيوتر بتمهيد. يمكنك أيضًا تشغيل البرنامج النصي كمهمة مجدولة للحصول على بياناتك من أي عملاء لم يعادوا تشغيله أو استخدامه Psexec أو بطريقة أخرى يمكنك التفكير في الحصول على البيانات على الفور. أو يمكنك إعادة كتابة البرنامج النصي تمامًا للاتصال عن بُعد بجميع أجهزتك والحصول على البيانات بهذه الطريقة (والتي قد لا تكون ممكنة بسبب جدران الحماية المحلية). أو يمكنك كتابة تطبيق وحدة تحكم صغيرة .NET يفعل نفس الشيء ، الأمر متروك لك ...

أيضا ، على الرغم من وجود ملف networkAddress-أواليت محددة لكائنات الكمبيوتر ؛ بشكل افتراضي ، لا يمكن لكائن الكمبيوتر نفسه الوصول إلى الكتابة إلى هذه الخاصية. لأن البدء يتم تشغيل النصوص في سياق SYSTEM حساب على الجهاز المعين أسهل شيء هو استخدام سمة أن كائن الكمبيوتر (SELF) للكتابة الوصول إلى. ال otherTelephone-أواليت متعددة وجزء من مجموعة خاصية المعلومات الشخصية التي تتمتع جميع كائنات الكمبيوتر بالوصول إلى الافتراضي. إذا كنت تريد استخدام networkAddress-أمانيين تحتاج إلى تعيين وصول صريح للكتابة إلى تلك السمة لجميع أجهزة الكمبيوتر الخاصة بك.

كما تحتاج إلى أن تضع في اعتبارك أن تخزين عنوان 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 Scope 192.168.1.0 عرض العملاء

واحصل على تقرير مثل هذا:

10.10.98.53-255.255.255.0 -00-0C-29-02-A4-09-لا تنتهي أبدًا-10.10.98.54-255.255.255.0-00-22-19-10-29-75 -1/21/2012 8 : 39: 25 صباحًا

yippeee! شكرا على الموضوع !! إذا لم يكن الأمر بالنسبة لهذا واحد ، فستكون Enver قد ضاقت بحثي إلى Technet ADN.

لا يمكنك فعل ذلك مع DHCP. يعزى DHCP IP من Mac ، وليس العكس. ARP هو ما يحول IP إلى Mac ، لكن الجهاز نفسه يجيب على طلب ARP ، لذلك إذا كان من الواضح أنه لن يجيب ...

أقترح عليك تخزين جهاز Mac في إعلانك مباشرة (أعتقد أن الإعلان يدعم سمات مخصصة؟)

تحتاج إلى استخدام ARP للحصول على جهة Mac والقيام بذلك في C هي عملية طويلة.

يتم ترميز MAC Adressions ، لذلك إذا كان لديك X Computers ، فحصل على عناوين X Mac وربطها بالإعلان.

لاحظ أنه يجب أن يكون الكمبيوتر على طلب عنوان MAC الخاص به.

العثور على عنوان MAC من عنوان IP

نعم ، لا تقلق بشأن ذلك ، يمكنك سحب هذه المعلومات مباشرة من DHCP إذا كان للكمبيوتر عقد إيجار.

تعرف كيف تنقر بزر الماوس الأيمن وإضافة حجز في DHCP؟

انظر في DHCP عن "الهوية الفريدة". إنه عنوان MAC ، بلا كولونز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top