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

Wie kann ich alle IPs im angeschlossenen Netzwerk auflisten, vorzugsweise über Terminal?

Bei der Verwendung von Ubuntu 10.10 fragte ich mich, ob es einen Befehlszeilenbefehl gibt, der alle IPs von Geräten auflisten kann, die mit dem Netzwerk verbunden sind?

Ich würde dies zum Beispiel verwenden, um alle Computer aufzulisten, die mit meinem Heimnetzwerk verbunden sind. Idealerweise sollte es ein Befehlszeilenbefehl sein, da ich ihn von C++ aus ausführen werde.

Irgendwelche Ideen?

Antworten (8)

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

Schauen Sie sich den Befehl arp-scan an - Sie werden ihn wahrscheinlich installieren müssen, z.B.:

sudo apt-get install arp-scan

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

Und um weitere Details zu geben:

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

Wo eth0 Ihr Gerät ist. Sie finden Ihr Gerät unter:

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

Verwenden Sie nmap. Beispiel: nmap -sn 10.10.10.0/24 Der Arp-Cache teilt Ihnen nur diejenigen mit, mit denen Sie kürzlich versucht haben, Kontakt aufzunehmen.

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

In Windows wäre dies “arp -a” Ich glaube, dass ein Äquivalent zu dem in Linux “arp -e” wäre.

Diese Information kann in der Man Page für arp gefunden werden:

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

Wenn Ihr Netzwerk 192.168.0.0/24 ist, erstellen Sie eine ausführbare Datei mit dem folgenden Code; ändern Sie die 192.168.0 in Ihr tatsächliches Netzwerk.

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

Versuchen Sie, nmap (sudo apt-get install nmap) zu installieren, und geben Sie nmap 192.168.1.0/24 ein, indem Sie 192.168.1 durch die ersten drei Teile Ihrer IP-Adresse ersetzen (finden Sie dies mit ip addr heraus).

Sie können auch eine etwas weniger genaue (meiner Erfahrung nach) Karte eines Netzwerks erhalten, indem Sie ping 192.168.1.255 (wiederum anstelle von 192.168.1) ausführen, die sollte auf jedem Rechner im Netzwerk eine ping ausgeben, aber meiner Erfahrung nach nicht immer korrekt funktioniert.

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

Auf einem Nexus, der tmux verwendet, kam Folgendes heraus, da arp-scan nicht im Repo enthalten ist, aber nmap vorinstalliert ist und nur die IP-Adressen anzeigt:

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

Für eine kompaktere Liste der angeschlossenen Geräte:

nmap -sL 192.168.0.* | grep \(1

Erläuterung.

nmap -sL 192.168.0.* listet alle IPs im Subnetz auf und markiert diejenigen, die einen Namen haben:

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

Da alle interessanten Datensätze mit der Klammer ( und der Ziffer 1 beginnen, filtern wir diese mit | grep \(1 (Backslash wird benötigt, um die Klammer zu umgehen)

Quirk Vorsicht, wenn zwei Geräte den gleichen Namen haben, zeigt nmap nur das eine an, das mit dem Router letzter verbunden war

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

Arbeit an Anders Larrsons Antwort -

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