Tengo un puñado de Mac en mi red doméstica, y accedo a shell solo desde el exterior. ¿Cómo puedo averiguar qué dirección IP de las otras máquinas son?
Tengo un puñado de Mac en mi red doméstica, y accedo a shell solo desde el exterior. ¿Cómo puedo averiguar qué dirección IP de las otras máquinas son?
Respuestas:
Intenta arp -a
ver la tabla de arp actual de tu computadora. Solo mostrará las direcciones IP con las que su computadora ha interactuado. Salida como esta (oscureció un poco para ocultar las direcciones MAC en mi red):
$ 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]
Si no tiene más información sobre qué computadora es cuál, puede obtener un poco más de información identificando a los fabricantes de las tarjetas de red a través de la búsqueda de direcciones MAC .
arp -a
mostrará solo las direcciones IP con las que su computadora ha interactuado" ? ¿Debo hacer ping a la transmisión (192.168.110.255) primero y obtener respuesta de cada dispositivo y luego usar arp para obtener una lista completa ya que solo interactué / pellizqué todo el dispositivo?
Asumiendo que todas las otras máquinas están en el mismo dominio de transmisión al que tiene acceso, a menudo es suficiente hacer ping a la dirección de transmisión. No encontrará máquinas que estén dormidas, ni las configuradas para no responder a los pings, ni las que responderán a los pings pero no a los pings de transmisión.
% 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
La primera y última respuesta casi siempre será su máquina local. Las (DUP!)
respuestas son de otras máquinas (aunque este ejemplo también muestra que algunas máquinas responden con la dirección de transmisión en sí, lo que no es muy útil).
También puede probar la dirección de transmisión de 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 ejemplo muestra menos cruft. Todos los (DUP!)
s son otras máquinas y la máquina local se identifica fácilmente como 127.0.0.1.
Todos sus Mac tienen nombres de host, por lo que no debería necesitar conocer las direcciones IP. En su lugar, solo usará el nombre de host.
Los nombres de host se basan en el nombre que le haya dado a la computadora. Entonces, si la computadora se llama "Jon's Mac", el nombre de host que usará será algo así como "jons-mac.local".
$ ssh jons-mac.local
Si aún no conoce los nombres de host de sus computadoras, puede encontrar los nombres de host de una computadora en las preferencias de uso compartido en esa computadora, o puede encontrar los nombres de host de otras computadoras en la red utilizando el comando dns-sd. Este comando usa Bonjour para permitirle navegar por los servicios de red; solo encontrará computadoras que realmente estén anunciando algún servicio de red (que, en general, son las únicas que le interesan).
Si desea conectarse a alguna computadora que proporcione ssh, puede encontrar las computadoras disponibles usando:
dns-sd -B _ssh._tcp .
En general, puede buscar hosts que brinden servicios particulares utilizando los nombres de servicio: http://www.dns-sd.org/ServiceTypes.html
El protocolo Bonjour también proporciona la capacidad de buscar todos los servicios, no solo algunos. Puede hacer esto buscando el servicio especial_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
La pregunta es acerca de cómo encontrar otras computadoras en la red desde la línea de comandos, pero también puede explorar los servicios anunciados por dns-sd en la GUI. Por ejemplo, Terminal.app> Nueva conexión remota ... muestra una ventana que muestra los servicios anunciados ssh, sftp, ftp y telnet.
dns-sd -B _ssh._tcp .
que se ejecute este comando ?
Puede intentar usar dns-sd
para realizar consultas Bonjour en la LAN.
dns-sd -B _ssh._tcp .
Tal vez sea un poco exagerado, pero podrías usar nmap
Una línea rápida de CLI one para recorrer / 24 subred haciendo ping a cada dirección IP. Rápido y un poco sucio, pero funciona.
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
Explicación: Para cambiar el rango, cambie x = 1 a x = 130, o lo que sea que desee comenzar, y 254 al final, digamos 135.
for (( x=130; x <= 135; x++ ));
ping -c 3 es enviar tres pings. Para cambiar el número de pings, cambie el 3 a otra cosa, y para cambiar el rango de direcciones, cambie 192.168.0 a otra cosa.
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
Si conoce el nombre de las otras computadoras en la LAN, la forma más simple es hacer ping a ellas:
$ 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
Esto puede depender de su enrutador local o servidor DHCP. Si el nombre de host simple no funciona, intente agregar .local (es decir, hacer ping a hostname.local ).
Obviamente, esto no funciona bien para LAN grandes o personas con malos recuerdos.
Si está utilizando Macs (suponiendo 10.5 o superior), simplemente habilite VNC para el acceso al escritorio y use Flame.app.
Es una pequeña utilidad realmente agradable que te brinda exactamente lo que necesitas, muy rápido. Lo único es que tendrías que ir más allá de SSH.
Para ventanas:
1) Escribir: para / L% I en (1,1,254) DO ping -w 30 -n 1 168.29.0.% I Esto hará ping a todas las direcciones en su red local
2) Luego escribe: arp -a Esto te dará todas las direcciones que respondieron