2011-03-24 13:27:13 +0000 2011-03-24 13:27:13 +0000
228
228

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

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

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

Какие-нибудь идеи?

Ответы (8)

247
247
247
2011-03-24 13:37:18 +0000

Ознакомьтесь с командой arp-scan - вам, вероятно, придется установить его, например:

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
115
115
115
2011-03-24 13:38:16 +0000

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

20
20
20
2011-03-24 13:33:14 +0000

В окнах это будет “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).
16
16
16
2013-05-17 18:45:14 +0000

Если ваша сеть 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
13
13
2013-09-08 18:56:24 +0000

Попробуйте установить 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), которая should выдает ping на каждую машину в сети, но, по моему опыту, не всегда работает корректно.

3
3
3
2016-10-30 20:33:12 +0000

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

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'
1
1
1
2016-10-20 10:32:13 +0000

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

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 (обратная косая черта необходима, чтобы избежать скобок)

Quirk Остерегайтесь, что если два устройства имеют одинаковое имя, nmap покажет только одно, которое было подключено к маршрутизатору last.

0
0
0
2018-07-06 10:04:06 +0000

Разрабатывая ответ Андерса Ларрсона -

#!/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)$: ():p'
}

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

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

6
10
3
5
6