web-dev-qa-db-pt.com

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

Usando o Ubuntu 10.10, eu queria saber se havia um comando de linha de comando que pode 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 ideia?

212
Christopher Gwilliams

Verifique o arp-scan command - você provavelmente terá que instalá-lo, 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. Você pode encontrar seu dispositivo com:

ifconfig
237
Linker3000

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

110
Keith

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).
19
David

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 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
15
Anders Larsson

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 da rede um pouco menos preciso (na minha experiência) executando ping 192.168.1.255 (novamente substituindo 192.168.1), o qual deve emitir uma ping para cada máquina na rede, mas, na minha experiência, não sempre funcione corretamente.

12
Samadi

Surgiu com o seguinte em um nexo usando tmux como 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}'
2
zentek

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ênteses ( e dígitos 1, filtramos para isso com | grep \(1 (barra invertida é necessária para escapar dos parênteses)

Pecado
Esteja ciente de que, se dois dispositivos tiverem o mesmo nome, nmap mostrará apenas o que estava conectado ao roteador last

0
Alexander Malakhov

Elaborando a resposta de Anders Larsson -

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