Eu tenho um punhado de Macs na minha rede doméstica e acesso de shell a apenas um deles de fora. Como posso descobrir qual é o endereço IP das outras máquinas?
Eu tenho um punhado de Macs na minha rede doméstica e acesso de shell a apenas um deles de fora. Como posso descobrir qual é o endereço IP das outras máquinas?
Respostas:
Tente arp -a
ver a tabela arp atual do seu computador. Ele mostrará apenas os endereços IP com os quais seu computador interagiu. Saída como esta (obscureceu 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 tiver mais informações sobre qual computador é, poderá obter um pouco mais de informações, identificando os fabricantes das placas de rede através da pesquisa de endereço MAC .
arp -a
mostrará apenas os endereços IP com os quais seu computador interagiu". ? Devo executar ping na transmissão (192.168.110.255) primeiro e obter resposta de todos os dispositivos e, em seguida, usar o arp para obter uma lista completa, pois acabei de interagir / executar ping em todo o dispositivo?
Supondo que todas as outras máquinas estejam no mesmo domínio de difusão ao qual você tem acesso, executar ping no endereço de difusão geralmente será suficiente. Ele não encontrará máquinas que estão adormecidas, nem aquelas configuradas para não responderem a pings, nem aquelas que responderão a pings, mas não para transmitir 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 a última resposta quase sempre serão sua máquina local. As (DUP!)
respostas 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 completo:
% 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. Todas as (DUP!)
outras são máquinas e a máquina local é facilmente identificada como 127.0.0.1.
Todos os seus Macs têm nomes de host, portanto você não precisa saber os endereços IP. Em vez disso, você apenas usará o nome do host.
Os nomes de host são baseados no nome que você deu ao computador. Portanto, se o computador tiver o nome "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 a navegação nos serviços de rede; você encontrará apenas computadores que estão realmente anunciando algum serviço de rede (que, em geral, são os únicos que lhe interessam).
Se você deseja se conectar a algum computador que fornece ssh, poderá encontrar os computadores disponíveis usando:
dns-sd -B _ssh._tcp .
Em geral, você pode procurar hosts que fornecem serviços específicos usando os nomes de serviço: http://www.dns-sd.org/ServiceTypes.html
O protocolo Bonjour também oferece a capacidade de procurar todos os serviços, não apenas os específicos. Você pode fazer isso navegando pelo serviço especial_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
A pergunta é sobre encontrar outros computadores na rede a partir da linha de comando, mas você também pode procurar serviços anunciados por DNS-SD na GUI. Por exemplo, Terminal.app> Nova conexão remota ... abre uma janela que mostra os serviços anunciados de ssh, sftp, ftp e telnet.
dns-sd -B _ssh._tcp .
seja executado?
Você pode tentar usar dns-sd
para realizar consultas Bonjour na LAN.
dns-sd -B _ssh._tcp .
Talvez seja um pouco exagerado, mas você poderia usar o nmap
Um liner rápido da CLI para percorrer a sub-rede / 24 faz ping 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 alterar o intervalo, altere x = 1 para x = 130, ou o que você deseja iniciar, e 254 para o final, por exemplo, 135.
for (( x=130; x <= 135; x++ ));
ping -c 3 é enviado 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.
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
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 simples não funcionar, tente anexar .local (por exemplo, ping hostname.local ).
Obviamente, isso não funciona bem para LANs grandes ou pessoas com pouca memória.
Se você estiver usando Macs (assumindo 10.5 ou superior), ative o VNC para acesso à área de trabalho e use o Flame.app.
É um pequeno utilitário muito bom que fornece exatamente o que você precisa, rapidamente. A única coisa é que você teria que ir além do SSH.
Para Windows:
1) Escreva: para / L% I em (1.154) DO ping -w 30 -n 1 168.29.0.% I Isso fará ping em todos os endereços da sua rede local
2) Em seguida, escreva: arp -a Isso fornecerá todos os endereços que responderam