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

Como posso listar todos os IPs da rede ligada, de preferência através do Terminal?

Usando o Ubuntu 10.10, estava a pensar se haveria um comando de linha de comando que pudesse listar todos os IPs dos dispositivos ligados à rede?

Eu usaria isto, por exemplo, para listar todos os computadores ligados à minha rede doméstica. Idealmente, precisa de ser uma linha de comandos, uma vez que eu vou executá-lo a partir de C++.

Alguma ideia?

Respostas (8)

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

Verifique o comando arp-scan - provavelmente terá de o instalar, por exemplo:

sudo apt-get install arp-scan

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

E para dar mais detalhes:

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

Onde eth0 é o seu dispositivo. Pode encontrar o seu dispositivo com:

ifconfig
115
115
115
2011-03-24 13:38:16 +0000

Use o nmap. exemplo: nmap -sn 10.10.10.0/24 A cache arp só lhe dirá àqueles que tentou contactar recentemente.

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

No windows isto seria “arp -a” creio que um equivalente ao do Linux seria “arp -e”.

Esta informação pode ser encontrada na página de homem para 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

Se a sua rede é 192.168.0.0/24, faça um ficheiro executável com o seguinte código; Altere o 192.168.0 para a sua rede real.

#!/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

Tente instalar nmap (sudo apt-get install nmap) e digite nmap 192.168.1.0/24 substituindo 192.168.1 pelas três primeiras partes do seu endereço ip (descubra usando ip addr).

Você também pode obter um mapa um pouco menos preciso (na minha experiência) de uma rede executando ping 192.168.1.255 (novamente substituindo 192.168.1), que deveria emitir um ping para cada máquina da rede, mas, na minha experiência, nem sempre funciona corretamente.

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

O tmux não está no repositório, mas o arp-scan veio pré-instalado, mostra apenas os endereços 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

Para uma lista mais compacta de dispositivos conectados:

nmap -sL 192.168.0.* | grep \(1

Explicação.

nmap -sL 192.168.0.* irão listar todos os IPs em sub-rede e marcar aqueles que têm nome:

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

Como todos os registos interessantes começam com parêntesis ( e dígito 1, filtramos para isso com | grep \(1 (é necessária uma barra invertida para escapar ao parêntesis)

Quirk Cuidado que se dois dispositivos tiverem o mesmo nome, nmap irá mostrar apenas um, que foi ligado ao router last

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

Ellaborating on Anders Larrson’s answer -

#!/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