Нахождение других компьютеров в сети по командной строке

Я имею горстку Mac в своей домашней сети и окружаю доступ к только одному из них с внешней стороны. Как я могу выяснить, какой IP-адрес других машин?

30
задан 30.04.2010, 00:28

7 ответов

Попробовать arp -a видеть текущую arp таблицу Вашего компьютера. Это покажет только те IP-адреса, с которыми взаимодействовал Ваш компьютер. Вывод как это (затенил немного для сокрытия MAC-адресов в моей сети):

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

Если у Вас нет дополнительной информации, на которой компьютер - который, можно получить немного больше информации путем идентификации производителей сетевых плат посредством поиска MAC-адреса.

39
ответ дан 07.12.2019, 09:15

Принятие всех других машин находится в том же широковещательном домене как один, к которому у Вас есть доступ, проверение с помощью ping-запросов широковещательного адреса будет часто достаточно. Это не найдет машины, которые спят, ни настроенные для не ответа на ping, ни тех, которые ответят на ping, но не широковещательно передавать ping.

% 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

Первый и последний ответ почти всегда будет Вашей локальной машиной. (DUP!) ответы от других машин (хотя этот пример также показывает некоторую машину, отвечающую самим широковещательным адресом, который не ужасно полезен).

Вы могли бы также попробовать широковещательный адрес все-:

% 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

Этот пример показывает меньше хлама. Весь (DUP!)s являются другими машинами, и локальная машина легко идентифицируется как 127.0.0.1.

10
ответ дан 07.12.2019, 09:15

Вы могли попытаться использовать dns-sd для выполнения Добрый день запросов на LAN.

7
ответ дан 07.12.2019, 09:15

Возможно, это - немного излишества, но Вы могли использовать nmap

6
ответ дан 07.12.2019, 09:15

Быстрый CLI один лайнер для продвижения через/24 подсеть проверяет с помощью ping-запросов каждый IP-адрес. Быстрый и довольно грязный, но это работает.

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

Объяснение: Для изменения диапазона измените x=1 на x=130, или независимо от того, что Вы хотите запуститься в, и 254 в конец, сказать 135.

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

-c 3 ping, отправляют три ping. Для изменения количества ping изменяют 3 на что-то еще, и изменить диапазон адресов, изменить 192.168.0 на что-то еще.

do ping -c 30 10.10.0.$x;
4
ответ дан 07.12.2019, 09:15

Если Вы знаете название других компьютеров в LAN, самый простой путь состоит в том, чтобы проверить с помощью ping-запросов их:

$ 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

Это может зависеть от Вашего локального маршрутизатора или сервера DHCP. Если пустое имя хоста не работает, попытайтесь добавить .local (т.е., проверьте с помощью ping-запросов hostname.local).

Очевидно, это не работает хорошо на большую LAN или людей с плохими памятями.

2
ответ дан 07.12.2019, 09:15

Если Вы используете Mac, (принятие 10.5 или больше) просто включают VNC для настольного доступа и используют Flame.app.

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

Это - действительно миленькая утилита, которая дает Вам точно, в чем Вы нуждаетесь, действительно быстро. Единственная вещь состоит в том, что необходимо было бы пойти дальше, чем SSH.

1
ответ дан 07.12.2019, 09:15

Теги

Похожие вопросы