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

Come posso elencare tutti gli IP della rete collegata, preferibilmente tramite Terminale?

Utilizzando Ubuntu 10.10, mi chiedevo se esiste un comando a riga di comando che può elencare tutti gli IP dei dispositivi collegati alla rete?

Lo userei per esempio, per elencare tutti i computer collegati alla mia rete domestica. Idealmente, deve essere a riga di comando, perché lo eseguirò da C++.

Qualche idea?

Risposte (8)

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

Controllare il comando arp-scan - probabilmente dovrete installarlo ad esempio:

sudo apt-get install arp-scan

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

E per dare ulteriori dettagli:

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

Dove eth0 è il vostro dispositivo. Potete trovare il vostro dispositivo con:

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

Usa nmap. esempio: nmap -sn 10.10.10.0/24 La cache dell'arp vi dirà solo quelli che avete cercato di contattare di recente.

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

In windows questo sarebbe “arp -a” Credo che un equivalente di quello di Linux sarebbe “arp -e”.

Questa informazione può essere trovata dalla pagina man per 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 la vostra rete è 192.168.0.0/24, create un file eseguibile con il seguente codice; Modificate l’192.168.0 nella vostra rete attuale.

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

Provate ad installare nmap (sudo apt-get install nmap) e digitate nmap 192.168.1.0/24 sostituendo 192.168.1 con le prime tre parti del vostro indirizzo IP (scopritelo usando ip addr).

Potete anche ottenere una mappa leggermente meno accurata (secondo la mia esperienza) di una rete eseguendo ping 192.168.1.255 (sempre sostituendo 192.168.1), che dovrebbe emettere un ping per ogni macchina sulla rete, ma, secondo la mia esperienza, non sempre funziona correttamente.

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

È venuto fuori quanto segue su un nexus che utilizza tmux, poiché arp-scan non è nel repo, ma nmap è stato preinstallato, visualizza solo gli indirizzi 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

Per un elenco più compatto dei dispositivi collegati:

nmap -sL 192.168.0.* | grep \(1

Spiegazione.

nmap -sL 192.168.0.* elencherà tutti gli IP nella sottorete e contrassegnerà quelli che hanno 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
``` &001 



Poiché tutti i record interessanti iniziano con la parentesi `(` e la cifra `1`, li filtriamo con `| grep \(1` (è necessario un backslash per sfuggire alla parentesi) 

**Quirk** 
Attenzione che se due dispositivi hanno lo stesso nome, `nmap` mostrerà solo quello, che è stato collegato al router _ultimo_
0
0
0
2018-07-06 10:04:06 +0000

Elaborazione della risposta di 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