यदि तृतीय-पक्ष उपयोगिता का उपयोग करना आपके लिए कोई समस्या नहीं है, तो मैं इन्हें आज़माने की सलाह देता हूं:
arp-scan ( होमब्रे के माध्यम से उपलब्ध )
brew install arp-scan
arp-scan --localnet
उंगलियों (डाउनलोड और "डेस्कटॉप एंबेडेड सीएलआई" पैकेज को ऊँगली से या होमब्रे के माध्यम से स्थापित करें brew cask install fing
)
sudo fing -r 1 -d true -o table,text
दोनों उपयोगिताओं में कई अतिरिक्त मोड और विशेषताएं हैं। मेरा सुझाव है कि इन सबसे बाहर निकलने के लिए पूरी तरह से मैनुअल पढ़ना।
यदि आपको थर्ड-पार्टी टूल्स का उपयोग करने से बचने की आवश्यकता है, तो यहां अंतर्निहित कमांड के साथ कुछ ऐसा ही करने का एक तरीका है। आप इन अंतःक्रियात्मक रूप से चला सकते हैं, लेकिन इसे स्क्रिप्ट के रूप में सहेजना संभव है। NB इसे छोटा रखने के लिए, यह स्क्रिप्ट कोई त्रुटि जाँच नहीं करता है, और केवल / 24 सबनेट पर काम करता है। अन्य आकारों के सबनेट पर काम करने के लिए इसे संशोधित करना पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है :)
#!/usr/bin/env bash
tab=$'\t'
pIF=$(echo "show State:/Network/Global/IPv4" | scutil | awk -F: '/PrimaryInterface/{sub(/ /,"",$2); print $2}')
sn=$(ipconfig getifaddr $pIF | sed -En 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')
for i in {1..254}; do ping -i0.1 -W100 -c1 $sn.$i | grep from; done
arp -a | grep $pIF | sed -e 's/^\?/unnamed/' -e "s/\ at\ /${tab}/g" -e "s/\ on\ /${tab}/g" -e 's/\ ifscope.*$//g' | awk 'BEGIN { FS="\t"; OFS="\t"; printf "%-17s\t%-15s\t%s\n", "MAC","INTERFACE","HOSTNAME (IP)" } { if($2!="(incomplete)") {printf "%-17s\t%-15s\t%s\n",$2,$3,$1}}'
यह कुछ इस तरह उत्पादन करना चाहिए:
MAC INTERFACE HOSTNAME (IP)
0:90:b:7a:85:62 en0 r1.lan (192.168.20.1)
2c:36:f8:48:2b:47 en0 cisco-sg300-10p.lan (192.168.20.2)
84:78:ac:a6:95:a0 en0 cisco-sg300-20.lan (192.168.20.3)
b4:fb:e4:cb:93:85 en0 wap1.lan (192.168.20.10)
0:11:32:10:cd:c1 en0 nas.lan (192.168.20.20)
0:11:32:3d:99:c9 en0 nas2.lan (192.168.20.21)
0:11:32:10:cd:c1 en0 unnamed (192.168.20.23)
d4:4b:5e:fe:6a:75 en0 brwd44b5efe6a75.lan (192.168.20.90)