delphi4arab منتديات دلفي للعرب
إيجاد الرقم التسلسلي لكارت الشبكة adressMac - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : إيجاد الرقم التسلسلي لكارت الشبكة adressMac (/showthread.php?tid=8749)



إيجاد الرقم التسلسلي لكارت الشبكة adressMac - أبو معاذ - 02-07-2017

السلام عليكم ورحمة الله وبركاته ،
للحصول على الرقم التسلسلي لكارت الشبكة   delphi adresse mac، استعمل الكود التالي :
كود :
uses NB30;


كود :
function GetAdapterInfo(Lana: Char): String; var     Adapter: TAdapterStatus;     NCB: TNCB;   begin     FillChar(NCB, SizeOf(NCB), 0);     NCB.ncb_command := Char(NCBRESET);     NCB.ncb_lana_num := Lana;     if Netbios(@NCB) <> Char(NRC_GOODRET) then     begin       Result := 'mac not found';       Exit;     end;       FillChar(NCB, SizeOf(NCB), 0);     NCB.ncb_command := Char(NCBASTAT);     NCB.ncb_lana_num := Lana;     NCB.ncb_callname := '*';       FillChar(Adapter, SizeOf(Adapter), 0);     NCB.ncb_buffer := @Adapter;     NCB.ncb_length := SizeOf(Adapter);     if Netbios(@NCB) <> Char(NRC_GOODRET) then     begin       Result := 'mac not found';       Exit;     end;     Result :=       IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[5]), 2);   end;     function GetMACAddress: string; var     AdapterList: TLanaEnum;     NCB: TNCB;   begin     FillChar(NCB, SizeOf(NCB), 0);     NCB.ncb_command := Char(NCBENUM);     NCB.ncb_buffer := @AdapterList;     NCB.ncb_length := SizeOf(AdapterList);     Netbios(@NCB);     if Byte(AdapterList.length) > 0 then       Result := GetAdapterInfo(AdapterList.lana[0])     else       Result := 'mac not found';   end;
الدالة تشتغل بشكل رائع .
لكن المشكلة إذا كان كابل الشبكة غير موصول   ، فلا يمكن حين إذن الحصول على الرقم التستسلي.
هل من فكرة بارك الله فيكم؟


RE: إيجاد الرقم التسلسلي لكارت الشبكة adressMac - لؤي - 04-07-2017

السلام عليكم

هناك جدول في جهاز التوجيه Switch يحوي على IP مع MAC المشكلة أن يحوي على بيانات في الزمن الحقيقي أي لما تقوم بنزع الكابل تختفي البانات
ممكن تعمل سكريبت يقوم بعمل نسخ البيانات و  من ثم تأخذها بغض النظر غن كانت الاجهزة موصولة بال Switch أم لا.

PHP كود :
Internet  192.168.200.3           3   0007.dddd.abc2  ARPA   Vlan4
Internet  192.168.200.10          6   000a
.bbbb.a5ba  ARPA   Vlan4
Internet  192.168.200.17          
-   0014.cccc.6c7b  ARPA   Vlan5
Internet  192.168.200.25        208   0005.aaaa.3b5a  ARPA   Vlan5 


هناك منفذ  ILO في الخوادم من نوع HP حتى ولو كان الخادم  في حالة توقف ممكن أن تلج إليه..


RE: إيجاد الرقم التسلسلي لكارت الشبكة adressMac - أبو معاذ - 05-07-2017

السلام عليكم ورحمة الله وبركاته ،
شكرا أخي لؤي على متابعة ، Blush 
لكن طلبي هو : عل بالإمكان قراءة رقم كروت الشبكة في حالة عدم اتصال الجهاز بأي شبكة ،
بمعنى disconnected.


حلت المشكلة ولله الحمد - أبو معاذ - 06-07-2017

السلام عليكم ورحمة الله وبركاته ،
أظنني بعد البحث وجدت الحل Tongue 
لمن يهمه الأمر هذا هو الكود.


كود :
//----------------------------------------------------------------------------------------------------- //     This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.9.9.350 //     http://code.google.com/p/wmi-delphi-code-creator/ //     Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/ //     Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2015 //----------------------------------------------------------------------------------------------------- // //     LIABILITY DISCLAIMER //     THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. //     YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS, //     DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE. // //---------------------------------------------------------------------------------------------------- program GetWMI_Info;   {$APPTYPE CONSOLE}   uses   SysUtils,   ActiveX,   ComObj,   Variants; // La classe Win32_NetworkAdapter représente une carte réseau sur un système Win32.   procedure  GetWin32_NetworkAdapterInfo; const   WbemUser            ='';   WbemPassword        ='';   WbemComputer        ='localhost';   wbemFlagForwardOnly = $00000020; var   FSWbemLocator : OLEVariant;   FWMIService   : OLEVariant;   FWbemObjectSet: OLEVariant;   FWbemObject   : OLEVariant;   oEnum         : IEnumvariant;   iValue        : LongWord; begin;   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);   FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL','WQL',wbemFlagForwardOnly);   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;   while oEnum.Next(1, FWbemObject, iValue) = 0 do   begin     Writeln(Format('Caption       %s',[String(FWbemObject.Caption)]));// String     Writeln(Format('MACAddress    %s',[String(FWbemObject.MACAddress)]));// String       Writeln('');     FWbemObject:=Unassigned;   end; end;     begin  try     CoInitialize(nil);     try       GetWin32_NetworkAdapterInfo;     finally       CoUninitialize;     end;  except     on E:EOleException do         Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));     on E:Exception do         Writeln(E.Classname, ':', E.Message);  end;  Writeln('Press Enter to exit');  Readln;       end.



RE: إيجاد الرقم التسلسلي لكارت الشبكة adressMac - kachwahed - 14-07-2017

وعليكم السلامة ورحمة الله وبركاته،
هل يمكن قراءة مخرجات تعليمة arp ؟
شيء مثل:
كود :
arp -a