Como posso listar todos os IPs na rede conectada, através do Terminal preferencialmente?

201

Usando o Ubuntu 10.10, eu queria saber se havia um comando de linha de comando que pudesse listar todos os IPs de dispositivos conectados à rede?

Eu usaria isso, por exemplo, para listar todos os computadores conectados à minha rede doméstica. Idealmente, ele precisa ser a linha de comando, pois eu vou executá-lo a partir do C ++.

Alguma idéia?

    
por Christopher Gwilliams 24.03.2011 / 14:27

8 respostas

223

Verifique o comando arp-scan - você provavelmente terá que instalá-lo, por exemplo:

sudo apt-get install arp-scan

link

E para dar mais detalhes:

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

Onde eth0 é o seu dispositivo. Você pode encontrar seu dispositivo com:

ifconfig
    
por 24.03.2011 / 14:37
104

Use o nmap. exemplo: nmap -sn 10.10.10.0/24 O cache de arp irá dizer-lhe apenas aqueles que você tentou contactar recentemente.

    
por 24.03.2011 / 14:38
19

No windows isso seria " arp -a " Acredito que um equivalente no Linux seria " arp -e ".

Esta informação pode ser encontrada na página man do arp:

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

Se sua rede for 192.168.0.0/24 , crie um arquivo executável com o seguinte código; Altere o 192.168.0 para sua rede real.

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

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 (use ip addr ).

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

    
por 08.09.2013 / 20:56
2

Criou-se com o seguinte em um nexo usando tmux , pois arp-scan não está no repo, mas nmap veio pré-instalado, exibe apenas os endereços IP:

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'
    
por 30.10.2016 / 21:33
0

Para uma lista mais compacta de dispositivos conectados:

nmap -sL 192.168.0.* | grep \(1

Explicação.

nmap -sL 192.168.0.* listará todos os IPs na sub-rede e marcará os que tiverem 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 registros interessantes começam com parêntese ( e dígito 1 , filtramos para isso com | grep \(1 (barra invertida é necessária para escapar dos parênteses)

Quirk
Tenha em atenção que, se dois dispositivos tiverem o mesmo nome, nmap mostrará apenas o que foi ligado ao router última

    
por 20.10.2016 / 12:32
0

Elaborando a resposta de Anders Larrson -

#!/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
    
por 06.07.2018 / 12:04