Yerel ağdaki tüm aygıtlar (IP Adresi, Ana Bilgisayar Adı, MAC Adresi) nasıl bulunur?


14

Bununla ilgili neredeyse her konuyu okudum, ancak hiç kimse aşağıdaki gibi bir tabloya erişmeyi oldukça kolaylaştırdı.

  IP Address     Hostname        MAC Address
  192.168.1.10 | myAppleTV     | 02:78:42:9b:bb:12
  192.168.1.10 | myiPhone      | b2:18:4a:3a:42:22
  192.168.1.10 | myiMac        | 09:17:a2:95:c4:00
  192.168.1.10 | myCanonPrinter| a0:ea:72:77:b4:aa

Çoğu zaman kullanıyorum arp -ave orada da var dns-sb, ancak bunların hiçbiri ağda dolaştığımda 3 anahtar bilgi bulmayı kolaylaştırmıyor, yani IP Adresi, Ana Bilgisayar Adı ve MAC Adresi. Bunu başaran bir yardımcı program olmadığına şaşırdım!


Bu tür bilgiler esas olarak yönlendiricide olacak
user151019

Yanıtlar:


12

Üçüncü taraf bir yardımcı program kullanmak sizin için sorun değilse, bunları denemenizi öneririz:

arp-scan ( Homebrew aracılığıyla edinilebilir )

brew install arp-scan
arp-scan --localnet

fing ( fing.com veya Homebrew üzerinden "Desktop Embedded CLI" paketini indirin ve yükleyin brew cask install fing)

sudo fing -r 1 -d true -o table,text

Her iki yardımcı program da bir dizi ek mod ve özelliğe sahiptir. Bunlardan en iyi şekilde yararlanmak için kılavuzları tamamen okumanızı öneririm.

Üçüncü taraf araçlarını kullanmaktan kaçınmanız gerekiyorsa, burada yerleşik komutlarla benzer bir şey yapmanın bir yolu vardır. Bunları etkileşimli olarak çalıştırabilirsiniz, ancak muhtemelen bir komut dosyası olarak kaydetmek daha kolaydır. Not: kısa tutmak için, bu komut dosyası hata denetimi yapmaz ve sadece / 24 alt ağlarda çalışır. Diğer boyutlardaki alt ağlarda çalışacak şekilde değiştirmek, okuyucuya bir alıştırma olarak bırakılır :)

#!/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}}'

Bu, şöyle bir çıktı vermelidir:

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.