Вопрос: Как я могу перечислить все IP-адреса в подключенной сети, используя терминал?


Используя Ubuntu 10.10, мне было интересно, есть ли команда командной строки, которая может отображать все IP-адреса устройств, подключенных к сети?

Я бы использовал это, например, для перечисления всех компьютеров, подключенных к моей домашней сети. В идеале, это должна быть командная строка, поскольку я буду запускать ее из C ++.

Есть идеи?


193
2018-03-24 13:27


Источник


askubuntu.com/questions/82480/... || serverfault.com/questions/72380/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
Больше дубликатов: 1.  Получение всех IP-адресов устройств, подключенных к одному маршрутизатору, 2.  Отобразить список компьютеров в локальной сети в Linux - Alexander Malakhov
3.  Лучший способ и инструменты для локального сканирования IP-адресов - Alexander Malakhov


Ответы:


Проверьте АРП-сканирования команда - вам, вероятно, придется ее установить, например:

sudo apt-get install arp-scan

http://manpages.ubuntu.com/manpages/hardy/man1/arp-scan.1.html

И дать более подробную информацию:

sudo arp-scan --interface=eth0 --localnet

Где eth0 - ваше устройство. Вы можете найти свое устройство с помощью:

ifconfig

214
2018-03-24 13:37



Отлично спасибо. Возвращает именно тот формат, который мне нужен. - Christopher Gwilliams
Прекрасно работает на OSX! Установлено с Brew, а интерфейс был en0, а не eth0, но отлично работает. - nthonygreen
Если вы подключены к сети с помощью Wi-Fi wlan0 вместо eth0, - Neil
Можете ли вы получить это, чтобы перечислять имена хостов, а также IP-адреса? - user1527227
Стоит отметить, что это не использует кеш ARP: он выполняет фактическое сканирование. В отличие от большинства сканирования nmap, это не может пересекать границы уровня 3, что обычно является тем, что вы хотите в этом сценарии. (Другими словами, он ограничен вашей подсетью.) - Zenexer


Используйте nmap. пример: nmap -sn 10.10.10.0/24 Кэш arp расскажет вам те, с которыми вы недавно пытались связаться.


103
2018-03-24 13:38



10.10.10.0 мой данный IP? Что в этом случае 24? Благодарю. - kolonel
@kolonel Это просто пример. Вы должны заменить его своей сетью. 24 является «косой чертой» маски подсети. Это означает использование 24 бит слева. Это эквивалентно 255.255.255.0. - Keith
@ Вы знаете, как я узнаю свой сетевой адрес? Или это только мой IP с 0/24 в конце? - TMH
@kolonel:en.wikipedia.org/wiki/Classless_Inter-Domain_Routing - arkod


В окнах это будет "arp -a«Я считаю, что эквивалент этого в Linux будет"arp -e».

Эту информацию можно найти на странице man для arp:

arp with no mode specifier will print the current content of the table.
-e : Use default Linux style output format (with fixed columns).

19
2018-03-24 13:33



Похоже, что он работает (возможно, потребуется играть, поскольку я нахожусь в общедоступной сети, поэтому, похоже, список всех серверов в сети отображается. - Christopher Gwilliams
Если я нахожусь в домашней сети, будет ли это просто список устройств, подключенных к моему маршрутизатору? Благодаря! - Christopher Gwilliams
Эта команда будет перечислять только устройства в текущем кэше arp хостов, и это будут только те, с которыми недавно связался хост. - Linker3000
Обе работают в Linux, но arp -a отображает (все) хосты в альтернативном (BSD) стиле. Простой arp делает то же самое, что работает arp -e это по умолчанию. - simplegamer


Если ваша сеть 192.168.0.0/24, создать исполняемый файл со следующим кодом; Изменить 192.168.0 к вашей реальной сети.

#!/bin/bash
for ip in 192.168.0.{1..254}; do
  ping -c 1 -W 1 $ip | grep "64 bytes" &
done

13
2018-05-17 18:45



Привет Андерс ... В сети пользователя может быть не 192.168.0.0/24; Я сделал заметку. Форматирование сайта не понравилось голым # !, и таким образом сбило форматирование фрагмента кода: при вводе кода используйте текстовые кнопки blockquote или preformatted и просмотрите свой ответ для правильного форматирования перед его отправкой, в качестве возврата каретки, вкладок, и пробелы, возможно, были лишены. - Nevin Williams
Кроме того, при поставке скрипта, который нужно поместить в файл и сделать исполняемым, а не просто вырезать и вставить, вероятно, лучше всего это указать; это может быть не очевидно для некоторых, что все требуется для реализации вашего решения. - Nevin Williams
Технически это приведет только к возврату хостов, которые отвечают на ping. Могут быть узлы, которые подключены, но не отвечают на эхо-запросы ICMP. Кроме того, можно передать один пакет во всю сеть, указав широковещательный адрес, который является последним адресом в сети IP: ping -c 1 -W 1 192.168.0.255 выполнит то же самое, что и для цикла for. - Nevin Williams
@NevinWilliams (требуется -b, удален -W, чтобы подождать больше) ping -b -c 1 192.168.0.255 результат "1 переданный пакет, 0 получен, 100% потеря пакетов, время 0мс" - Aquarius Power


Попробуйте установить nmap (sudo apt-get install nmap) и типа nmap 192.168.1.0/24 замещающий 192.168.1 с первыми тремя частями вашего IP-адреса (узнайте, используя ip addr).

Вы также можете получить чуть менее точную (по моему опыту) карту сети, запустив ping 192.168.1.255 (снова подставляя 192.168.1), который должен выдавать ping для каждой машины в сети, но, по моему опыту, не всегда работает правильно.


10
2017-09-08 18:56



На самом деле, ни один из ответов не будет работать правильно. IP не был разработан с учетом этого требования, и есть такие вещи, как Private VLAN, которые не позволяют найти другие хосты в одной локальной сети. - Ron Maupin


Взаимодействие с tmux в виде arp-scan не находится в репо, но nmap был предварительно установлен, отображает только IP-адреса:

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'

2
2017-10-30 20:33





Для более компактного списка подключенных устройств:

nmap -sL 192.168.0.* | grep \(1

Объяснение.

nmap -sL 192.168.0.* перечислит все IP-адреса в подсети и отметит те, у которых есть имя:

Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255

Поскольку все интересные записи начинаются со скобок ( и цифра 1, мы фильтруем для этого с | grep \(1 (обратная косая черта необходима для исключения скобок)

Галтель
Помните, что если два устройства имеют одинаковое имя, nmap покажет только тот, который был подключен к маршрутизатору последний


0
2017-10-20 10:32



Если у вас есть тот же ответ на два вопроса, то, возможно, стоит подумать о том, чтобы помечать вопросы как дубликаты, а не публиковать повторяющиеся ответы. Таким образом, знания могут быть разделены, поскольку похожие вопросы связаны между собой. - Mokubai♦
@Mokubai Вы правы, я добавляю комментарий к OP. Это показывает интересную проблему. быстро поиск обнаружил 6 дубликатов (это Q и 5 ссылок) на 4 сетевых сайтах (SU, Ask Ubuntu, SF, Unix). Конечно, их гораздо больше! Как я могу справиться с этим? В идеале каждый из этих 6 должностей должен ссылаться на 5 других. Добавление всех этих ссылок вручную явно не масштабируется. Итак, на данный момент я связан с этим сообщением (в большинстве случаев). Другая проблема заключается в том, что невозможно отметить Q на AskUbuntu как дубликат Q на SU. Хм ... Наверное, это уже обсуждалось на мета? - Alexander Malakhov
не работает для меня на Centos 7, просто перечисляет все возможные IP-адреса в сети без имен. arp-scan работал для меня. - Jeff


На основе ответа Андерса Ларсона -

#!/bin/bash
function scan ()
{
    for ip in $1.{1..254}; do
        ping -c 1 -W 1 $ip &
    done | sed -nE 's:^.* from ([0-9.]+).*time=(.*s)$:\1 (\2):p'
}

if [ $1 ]; then
    for baseip; do
        scan $baseip
    done
else
    scan 192.168.1
fi

0
2017-07-06 10:04