Localizando outros computadores na rede pela linha de comando

25

Eu tenho um punhado de Macs na minha rede doméstica e concordo com acesso a apenas um deles do lado de fora. Como posso descobrir o endereço IP das outras máquinas?

    
por Jon Haddad 29.04.2010 / 21:41

9 respostas

31

Teste arp -a para ver a tabela atual do seu computador. Ele mostrará apenas os endereços IP com os quais o seu computador interagiu. Saída assim (obscurecida um pouco para esconder endereços MAC na minha rede):

$ 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]

Se você não tem mais informações sobre qual computador é qual, você pode obter um pouco mais informações identificando os fabricantes das placas de rede através de pesquisa de endereço MAC .

    
por 29.04.2010 / 23:53
10

Assumindo que todas as outras máquinas estão no mesmo domínio de broadcast do qual você tem acesso, o ping do endereço de broadcast geralmente será suficiente. Ele não encontrará máquinas que estejam dormindo, nem aquelas configuradas para não responder a pings, nem aquelas que responderão aos pings, mas não transmitirão pings.

% 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

A primeira e última resposta será quase sempre sua máquina local. As respostas (DUP!) são de outras máquinas (embora este exemplo também mostre alguma máquina respondendo com o próprio endereço de broadcast, o que não é muito útil).

Você também pode tentar o endereço de transmissão para todos:

% 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

Este exemplo mostra menos sujeira. Todos os (DUP!) s são outras máquinas e a máquina local é facilmente identificada como 127.0.0.1.

    
por 30.04.2010 / 02:09
8

Todos os seus Macs têm nomes de host para que você não precise saber os endereços IP. Em vez disso, você apenas usará o nome do host.

Os nomes de host são baseados em qualquer nome que você tenha dado ao computador. Então, se o computador for chamado "Jon's Mac", o nome do host que você usará será algo como "jons-mac.local".

$ ssh jons-mac.local

Se você ainda não conhece os nomes de host de seus computadores, pode descobrir os nomes de host de um computador nas preferências de compartilhamento desse computador ou pode descobrir os nomes de host de outros computadores na rede usando o comando dns-sd. Este comando usa o Bonjour para permitir que você navegue pelos serviços de rede; você só encontrará computadores que estejam realmente anunciando algum serviço de rede (que, em geral, são os únicos com os quais você se importa).

Se você quiser se conectar a algum computador que oferece ssh, poderá encontrar os computadores disponíveis usando:

dns-sd -B _ssh._tcp .

Em geral, você pode pesquisar por hosts que fornecem serviços específicos usando os nomes de serviços: link

O protocolo Bonjour também oferece a capacidade de procurar serviços todos , não apenas os particulares. Você pode fazer isso navegando pelo serviço especial _services._dns-sd._udp

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

A pergunta é perguntar sobre como localizar outros computadores na rede a partir da linha de comando, mas também é possível procurar serviços anunciados pelo dns-sd na GUI. Por exemplo, Terminal.app > New Remote Connection ... abre uma janela que mostra os serviços anunciados ssh, sftp, ftp e telnet.

    
por 23.01.2014 / 22:53
7

Você pode tentar usar dns-sd para realizar consultas Bonjour na LAN.

    
por 29.04.2010 / 21:54
6

Talvez seja um pouco exagerado, mas você pode usar o nmap

    
por 29.04.2010 / 22:03
4

Um CLI rápido de um liner para percorrer / 24 sub-redes em cada endereço IP. Rápido e meio sujo, mas funciona.

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

Explicação: Para mudar o intervalo, altere x = 1 para x = 130, ou o que você quer começar, e 254 até o final, digamos 135.

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

ping -c 3 é enviar três pings. Para alterar o número de pings, altere o 3 para outra coisa e, para alterar o intervalo de endereços, altere o 192.168.0 para outra coisa.

do ping -c 30 10.10.0.$x;
    
por 30.04.2010 / 00:02
2

Se você souber o nome dos outros computadores na LAN, a maneira mais simples é fazer o ping deles:

$ 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

Isso pode depender do seu roteador local ou servidor DHCP. Se o nome do host não funcionar, tente anexar .local (isto é, ping hostname.local ).

Obviamente, isso não funciona bem para LANs grandes ou pessoas com memórias ruins.

    
por 29.04.2010 / 23:33
1

Se você estiver usando Macs (assumindo 10,5 ou mais), basta ativar o VNC para acessar a área de trabalho e usar o Flame.app.

link

É um pequeno utilitário muito legal que oferece exatamente o que você precisa, muito rapidamente. A única coisa é que você teria que ir além do SSH.

    
por 30.04.2010 / 05:17
1

Para o Windows:

1) Escreva: para / L% I em (1,1,254) DO ping -w 30 -n 1 168.29.0.% I  Isso fará o ping de todos os endereços na sua rede local

2) Depois escreva: arp -a Isso lhe dará todos os endereços que responderam

    
por 28.03.2014 / 14:44