पायथन के साथ प्रश्न का उत्तर देने के लिए आपके प्लेटफ़ॉर्म पर निर्भर करता है। मेरे पास विंडोज़ आसान नहीं है, इसलिए निम्न समाधान लिनक्स बॉक्स पर काम करता है जिसे मैंने लिखा था। नियमित अभिव्यक्ति में एक छोटा सा परिवर्तन ओएस एक्स में काम करेगा।
सबसे पहले, आपको लक्ष्य पिंग करना होगा। यह लक्ष्य रखेगा - जब तक यह आपके नेटमास्क में है, जो इस स्थिति में ऐसा लगता है - यह आपके सिस्टम के एआरपी कैश में होगा। का निरीक्षण करें:
13:40 [email protected]% ping 97.107.138.15
PING 97.107.138.15 (97.107.138.15) 56(84) bytes of data.
64 bytes from 97.107.138.15: icmp_seq=1 ttl=64 time=1.25 ms
^C
13:40 [email protected]% arp -n 97.107.138.15
Address HWtype HWaddress Flags Mask Iface
97.107.138.15 ether fe:fd:61:6b:8a:0f C eth0
कि जानने के बाद, आप एक छोटे से उपप्रक्रिया जादू - अन्यथा आप लिख रहे हैं एआरपी कैश कोड की जाँच अपने आप को, और आप ऐसा नहीं करना चाहती:
>>> from subprocess import Popen, PIPE
>>> import re
>>> IP = "1.2.3.4"
>>> # do_ping(IP)
>>> # The time between ping and arp check must be small, as ARP may not cache long
>>> pid = Popen(["arp", "-n", IP], stdout=PIPE)
>>> s = pid.communicate()[0]
>>> mac = re.search(r"(([a-f\d]{1,2}\:){5}[a-f\d]{1,2})", s).groups()[0]
>>> mac
"fe:fd:61:6b:8a:0f"
स्रोत
2009-11-17 18:44:39
वह नि: शुल्क एआरपी से परहेज है, स्थानीय मशीन पर सामान की जाँच नहीं। प्रश्न को ध्यान से पढ़ें: ** मेरे स्थानीय नेटवर्क पर एक डिवाइस से ** –