का उपयोग कर रिमोट मैक पता प्राप्त करें मैं अपने लैन पर रिमोट होस्ट का मैक पता कैसे प्राप्त करूं? मैं पायथन और लिनक्स का उपयोग कर रहा हूँ।पायथन और लिनक्स
उत्तर
आप चल आदेश arp -a
यहाँ है मैक पता हथियाने (परीक्षण नहीं)
लिनक्स/यूनिक्स में, के बारे में कुछ लिंक arping कोशिश कर सकते हैं,
http://www.ibm.com/developerworks/aix/library/au-pythocli/
Windows में, का उपयोग करते हुए आईपी हेल्पर एपीआई ctypes
कई साल पहले, मुझे कॉर्पोरेट परिसर में सभी मशीनों से विभिन्न मशीन जानकारी एकत्र करने के साथ काम सौंपा गया था। जानकारी का एक वांछित टुकड़ा मैक पता था, जो कई सबनेट्स पर फैले नेटवर्क पर जाना मुश्किल है। उस समय, मैंने विंडोज़ अंतर्निहित "nbtstat" कमांड का उपयोग किया था।
आज एक यूनिक्स उपयोगिता है जिसे "nbtscan" कहा जाता है जो समान जानकारी प्रदान करता है। यदि आप बाहरी उपकरण का उपयोग नहीं करना चाहते हैं, तो शायद पाइथन के लिए नेटबीओएसओ पुस्तकालय हैं जिनका उपयोग आपके लिए जानकारी एकत्र करने के लिए किया जा सकता है?
आप या तो Win32 या लिनक्स पर इसका उपयोग कर सकते
import subprocess
import sys
remotehost="192.168.0.122"
cmd="arp -a"
p=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, errors = p.communicate()
if output is not None :
if sys.platform in ['linux','linux2']:
for i in output.split("\n"):
if remotehost in i:
for j in i.split():
if ":" in j:
print "%s--> %s" % (remotehost,j)
elif sys.platform in ['win32']:
item = output.split("\n")[-2]
if remotehost in item:
print "%s--> %s" %(remotehost, item.split()[1])
एनबी: एआरपी प्रविष्टियों कुछ समय के बाद बंद हो जाता है, तो आप, उदाहरण के लिए पिंग "अपने नेटवर्क बाढ़" की जरूरत है ताकि एआरपी -एक अपने remotehost को दर्शाता है।
तो एक अर्थ में। यह उदाहरण अपूर्ण है। – Nightforce2
एआरपी प्रविष्टियां कभी सही नहीं हो सकतीं, मैंने कई बार मेजबान पिंग करने की कोशिश की लेकिन arp -a मुझे यह मैक/ईथरनेट पता नहीं देगा। (सक्रिय स्थिति बीटीडब्लू से विंडोज कोड के साथ कोई चिंता नहीं)
लिनक्स (और * निक्स) पर विश्वसनीय तरीका arping या scappy का उपयोग करना है (http://en.wikipedia.org/wiki/Arping देखें) और फिर आउटपुट को पार्स करें। यहां इस्तेमाल किया गया कोड है। आपको रूट होना चाहिए या arping चलाने के लिए सूडो का उपयोग करना होगा।
cmd = '/sbin/arping -c 1 ' + remotehost
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, errors = p.communicate()
if output is not None :
mac_addr = re.findall(r'(\[.*\])', output)[0].replace('[', '').replace(']', '')
इन आदेशों का उपयोग करें:
arp -n <IP Address>|awk '/<ip address>/ {print $3}'
उदाहरण के लिए
, आप 192.168.10.1 के मैक पते चाहते हैं:
#arp -n 192.168.10.1|awk '/192.168.10.1/ {print $3}'
#00:0c:29:68:8f:a4
तुम सिर्फ ओएस 'एआरपी कैश क्वेरी करना चाहते हैं, उचित रूप से हाल ही में लिनक्स कर्नेल इसका समर्थन करते हैं:
import os, sys
host = sys.argv[1]
# ping is optional (sends a WHO_HAS request)
os.popen('ping -c 1 %s' % host)
# grep with a space at the end of IP address to make sure you get a single line
fields = os.popen('grep "%s " /proc/net/arp' % host).read().split()
if len(fields) == 6 and fields[3] != "00:00:00:00:00:00":
print fields[3]
else:
print 'no response from', host
नमस्ते यह एक त्वरित फिक्स है python3
import subprocess
import sys
remotehost="192.168.0.122"
cmd="arp -a"
p=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, errors = p.communicate()
if output is not None :
output = output.decode('ascii')
if sys.platform in ['linux','linux2']:
for i in output.split("\n"):
if remotehost in i:
for j in i.split():
if ":" in j:
print("%s--> %s" % (remotehost,j))
elif sys.platform in ['win32']:
item = output.split("\n")[-2]
if remotehost in item:
print("%s--> %s" %(remotehost, item.split()[1]))
- 1. लिनक्स और पायथन 3
- 2. लिनक्स (पायथन)
- 3. लिनक्स/पायथन: प्रिंट
- 4. लिनक्स बैश स्क्रिप्ट एकाधिक पायथन
- 5. लिनक्स में पायथन ओसीआर मॉड्यूल?
- 6. लिनक्स में स्टैंडअलोन पायथन अनुप्रयोग
- 7. पाइथन 3 और लिनक्स
- 8. शेबांग नोटेशन: विंडोज और लिनक्स पर पायथन लिपियों?
- 9. लिनक्स: पायथन में पाइप (एनसीआरएसईएस) स्क्रिप्ट, stdin और टर्मियो
- 10. $ पायथन 2.7 और पायथन 3.2
- 11. क्या हम लिनक्स शेल स्क्रिप्ट या पायथन
- 12. लिनक्स प्रक्रिया प्रबंधन के लिए पायथन पुस्तकालय
- 13. पायथन/Django विकास, खिड़कियां या लिनक्स?
- 14. पायथन और सर्वर लोड
- 15. पायथन - हैशलिब एमडी 5 लिनक्स/विंडोज़
- 16. लिनक्स
- 17. लिनक्स
- 18. लिनक्स क्रिप्टो एपीआई और लिनक्स/crypto.h - प्रलेखन
- 19. पायथन में एम्बेडेड लिनक्स डिवाइस पेड़ पार्सर?
- 20. लिनक्स
- 21. लिनक्स
- 22. क्षमताओं और लिनक्स और जावा
- 23. लिनक्स और विंडोज
- 24. विंडोज और लिनक्स
- 25. विंडोज और लिनक्स
- 26. विंडोज और लिनक्स
- 27. विंडोज और लिनक्स [सी ++]
- 28. एचपी-यूएक्स और लिनक्स
- 29. कहाँ और कैसे लिनक्स
- 30. लिनक्स और विंडोज
या, 'arp -n $ IP', केवल वांछित आईपी पते पर फ़िल्टर करने के लिए। –
धन्यवाद, विंडोज़ में, 'arp -a $ IP' बस एक नोट। – YOU
ध्यान रखें कि यह नेटवर्क पर WHO_HAS संदेश नहीं भेजेगा - पता पहले से ही आपकी मशीन द्वारा देखा गया है, जो हो सकता है कि आपके पास कोई बड़ा नेटवर्क न हो (यदि कैश भी पुरानी प्रविष्टियां हटा दी जा सकती है बहुत बड़ा हो जाता है)। –