Ağdaki diğer bilgisayarları komut satırı üzerinden bulma


30

Ev ağımda bir avuç Mac var ve bunlardan yalnızca birine dışarıdan kabuk erişimi var. Diğer makinelerin IP adreslerinin ne olduğunu nasıl öğrenebilirim?

Yanıtlar:


39

arp -aBilgisayarınızın geçerli arp tablosunu görmeye çalışın . Yalnızca bilgisayarınızın etkileşimde bulunduğu IP adreslerini gösterir. Bunun gibi çıktılar (ağımda MAC adreslerini gizlemek için biraz gizlenmiş):

$ arp -a
? (10.1.168.1) at xx:xx:9e:82:ab:f6 on en1 ifscope [ethernet]
? (10.1.168.16) at xx:xx:29:d3:17:8 on en1 ifscope [ethernet]
? (10.1.168.115) at xx:xx:2:4f:76:14 on en1 ifscope [ethernet]
? (10.1.168.131) at xx:xx:6b:d0:36:a5 on en1 ifscope [ethernet]
? (10.1.168.134) at (incomplete) on en1 ifscope [ethernet]
? (10.1.168.137) at xx:xx:65:46:cd:b8 on en1 ifscope [ethernet]
? (10.1.168.255) at ff:ff:ff:ff:ff:ff on en1 ifscope [ethernet]
? (192.168.4.255) at ff:ff:ff:ff:ff:ff on vmnet8 ifscope [ethernet]
? (192.168.110.255) at (incomplete) on vmnet1 ifscope [ethernet]

Hangi bilgisayarın hangisi olduğu hakkında daha fazla bilginiz yoksa, MAC adresi araması yoluyla ağ kartı üreticilerini tanımlayarak biraz daha fazla bilgi edinebilirsiniz .


12
Maalesef bunu doğru olarak işaretlemek neredeyse 4 yıl aldı.
Jon Haddad,

Bunun anlamı " arp -ayalnızca bilgisayarınızın etkileşimde bulunduğu IP adreslerini gösterecektir". ? Yayına (192.168.110.255) ping atıp, her cihazdan yanıt almalı mıyım ve daha sonra tüm cihazı etkilediğim / taktığımdan beri tam bir liste elde etmek için arp kullanmalı mıyım?
Weishi Zeng,

10

Diğer tüm makinelerin erişiminizdekilerle aynı yayın etki alanında olduğunu varsayarsak, yayın adresini pinglemek genellikle yeterli olacaktır. Uyuyan makineleri, ping'lere cevap vermeyecek şekilde yapılandırılmış olanları ya da ping'lere cevap verecek ancak ping yayınlayacak olanları bulamayacaklar.

% ifconfig -a | grep broadcast
        inet 192.168.1.241 netmask 0xffffff00 broadcast 192.168.1.255
% ping -i 5 -c 2 192.168.1.255
PING 192.168.1.255 (192.168.1.255): 56 data bytes
64 bytes from 192.168.1.241: icmp_seq=0 ttl=64 time=0.393 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=2.511 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=5.810 ms (DUP!)
64 bytes from 192.168.1.255: icmp_seq=0 ttl=64 time=7.886 ms (DUP!)
64 bytes from 192.168.1.241: icmp_seq=1 ttl=64 time=0.312 ms

--- 192.168.1.255 ping statistics ---
2 packets transmitted, 2 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.312/3.382/7.886/3.010 ms

İlk ve son cevap neredeyse her zaman yerel makineniz olacaktır. (DUP!)(Bu örnek, aynı zamanda son derece yararlı değildir yayın adresi kendisi ile yanıt bir makineyi göstermektedir da) cevaplar, makineleri vardır.

Hepsi bir arada yayın adresini de deneyebilirsiniz:

% ping -i 5 -c 2 255.255.255.255
PING 255.255.255.255 (255.255.255.255): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.392 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=3.053 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=8.685 ms (DUP!)
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.319 ms

--- 255.255.255.255 ping statistics ---
2 packets transmitted, 2 packets received, +2 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.319/3.112/8.685/3.401 ms

Bu örnek daha az sarmal gösterir. Hepsi (DUP!)diğer makinelerdir ve yerel makine kolayca 127.0.0.1 olarak tanımlanır.


8

Mac'lerde tüm ana bilgisayar adları olduğundan IP adreslerini bilmeniz gerekmez. Bunun yerine sadece ana bilgisayar adını kullanırsınız.

Ana bilgisayar adları, bilgisayara verdiğiniz herhangi bir adı temel alır. Yani bilgisayar "Jon's Mac" olarak adlandırılmışsa, kullanacağınız ana bilgisayar adı "jons-mac.local" gibidir.

$ ssh jons-mac.local

Bilgisayarlarınızın ana bilgisayar adlarını zaten bilmiyorsanız, bilgisayarın ana bilgisayar adlarını bu bilgisayardaki paylaşım tercihlerinde bulabilir veya dns-sd komutunu kullanarak ağdaki diğer bilgisayarların ana bilgisayar adlarını bulabilirsiniz. Bu komut ağ servislerine göz atmanıza izin vermek için Bonjour kullanır; yalnızca bazı ağ servislerini reklam yapan bilgisayarları (bu da büyük ve önemse de ilgilendiğiniz bilgisayarları) bulacaksınız.

Ssh sağlayan bazı bilgisayarlara bağlanmak istiyorsanız, aşağıdaki bilgisayarları kullanarak aşağıdakileri bulabilirsiniz:

dns-sd -B _ssh._tcp .

Genelde, hizmet adlarını kullanarak belirli hizmetleri sunan ana bilgisayarları arayabilirsiniz: http://www.dns-sd.org/ServiceTypes.html

Bonjour protokolü ayrıca sadece belirli olanlara değil, tüm servislere göz atma imkanı sunar . Özel servise göz atarak bunu yapabilirsiniz._services._dns-sd._udp

dns-sd -B _services._dns-sd._udp .

Soru, ağdaki diğer bilgisayarları komut satırından bulma hakkında soruyor, ancak GUI'deki dns-sd reklamı yapılan hizmetlere de göz atabilirsiniz. Örneğin, Terminal.app> Yeni Uzaktan Bağlantı ... reklamı yapılan ssh, sftp, ftp ve telnet servislerini gösteren bir pencere açar.


Bu komutun ne kadar hızlı dns-sd -B _ssh._tcp .çalışmasını bekleyebilirsiniz ?
AJP

1
@AJP Reklamı yapılan herhangi bir ssh servisi varsa, sonuçları derhal iade etmeye başlamalıdır. Fakat eğer 'bitirmek' ile çıkış anlamına geliyorsanız, çıkış yapmaz; komut, uzun ömürlü bir sorguyu çalıştırır ve hizmetler göründüğünde ve siz siz onu öldürene kadar ağdan kaybolduğunuzda sürekli olarak değişiklikler üretir.
bames53,

7

dns-sdLAN üzerinde Bonjour sorguları gerçekleştirmek için kullanmayı deneyebilirsiniz .


3
Bu cevabın OS X'e özel olduğunu ve umursamayacağım ek ağ ayrıntılarını almaktan kaçınmak için (bu soru bağlamında) bir araya geldiğini seviyorum. İhtiyaçlarım için çalışan özel komut şuydu:dns-sd -B _ssh._tcp .
stevenhaddox

6

Belki biraz fazladan fazlalık ama nmap kullanabilirsin


1
Bu soruyu cevaplayabilse de, neden böyle olduğunu açıklayabilirseniz daha iyi bir cevap olabilir .
DavidPostill

4

Her IP adresine ping atıp / 24 alt ağa geçiş yapmak için hızlı bir CLI bir liner. Çabuk ve kirli bir şey ama işe yarıyor.

for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done

Açıklama: Aralığı değiştirmek için, x = 1 - x = 130 arasında veya ne ile başlamak isterseniz, 254 ile sonuna kadar değiştirin, 135 deyin.

for (( x=130; x <= 135; x++ ));

ping -c3, üç ping gönderir. Ping sayısını değiştirmek için 3'ü başka bir şey olarak değiştirin ve adres aralığını değiştirmek için 192.168.0'ı başka bir şeyle değiştirin.

do ping -c 30 10.10.0.$x;

1
Bunu yapmak için sadece fping kullanabilirsiniz:fping -ag 172.16.0.0/16
58'de 13

Bu benim için çabuk ama başka bir şey değil ...
Max Williams

Hızlı ve Kirli bir çözüm. Olduğu gibi, nmap gibi doğru araçların yokluğunda uygulanması hızlıdır ve nmap gibi doğru araçların performansı kadar değildir. Ana bilgisayarlara ping göndermek, yanıt vermediğinde biraz zaman alabilir ve bu çok iş parçacığı olmadığından, bir ana bilgisayarın yanıt vermemesi biraz zaman alacaktır. Artı tarafta, bash dışında bir şey gerektirmez.
quinnr

2

Yerel ağdaki diğer bilgisayarların adını biliyorsanız, en basit yol onları pinglemektir:

$ ping foobar

Pinging foobar.lan [192.168.0.25] with 32 bytes of data:

Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64

Bu, yerel yönlendiricinize veya DHCP sunucunuza bağlı olabilir. Çıplak ana bilgisayar adı çalışmazsa, .local eklemeyi deneyin (yani, ping hostname.local ).

Açıkçası bu, büyük LAN'lar veya hafızası iyi olmayan kişiler için iyi çalışmıyor.


1

Mac kullanıyorsanız (10.5 veya daha büyük olduğunu varsayarsak), masaüstü erişim için VNC'yi etkinleştirin ve Flame.app kullanın.

http://husk.org/apps/flame/

Gerçekten çok çabuk, tam olarak ihtiyacınız olanı veren küçük bir yardımcı programdır. Tek şey, SSH'den daha ileri gitmeniz gerektiğidir.


1

Pencereler için:

1) Yaz: / L% için ben (1,1,254) DO ping -w 30 -n 1 168.29.0.% I Bu, yerel ağınızdaki tüm adresleri pingleyecektir.

2) O zaman yaz: arp -a Bu size cevap veren tüm adresleri verecektir


Tabii ki yerel ağ adresinize bağlıdır. Benim durumumda ise 168.29.0.xxx. Sizinki 192.168.0.xxx gibi bir şey olabilir
Chavdar

1
OP bir Mac kullandığını belirttiğinde cevabınız Windows'a dayanıyor. Çözümü bir Mac üzerinde çalışacaksa, bunu hesaba katmak veya belirtmek için sorunuzu düzenleyebilir misiniz?
Matthew Williams

Her MAC kullanıcısının çevresinde oturan bir Windows işletim sistemi vardır ... Onsuz yaşayamazsınız ...: D
user2173353
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.