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

Jak mogę wymienić wszystkie IP w podłączonej sieci, najlepiej przez Terminal?

Używając Ubuntu 10.10 zastanawiałem się, czy istnieje komenda z linii poleceń, która może wymienić wszystkie IP urządzeń podłączonych do sieci?

Użyłbym tego na przykład, aby wymienić wszystkie komputery podłączone do mojej sieci domowej. Idealnie byłoby, gdyby to była komenda z linii poleceń, ponieważ będę ją uruchamiał z C++.

Jakieś pomysły?

Odpowiedzi (8)

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

Sprawdź komendę arp-scan - najprawdopodobniej będziesz musiał ją zainstalować np.:

sudo apt-get install arp-scan

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

oraz podać dalsze szczegóły:

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

Gdzie eth0 jest Twoim urządzeniem. Możesz znaleźć swoje urządzenie za pomocą:

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

Użyj nmap. przykład: nmap -sn 10.10.10.0/24 Pamięć podręczna arp powie ci tylko te osoby, z którymi próbowałeś się ostatnio skontaktować.

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

W Windowsach byłoby to “arp -a” Wierzę, że odpowiednikiem tego w Linuksie byłoby “arp -e”.

Tę informację można znaleźć na stronie man dla 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

Jeśli Twoja sieć to 192.168.0.0/24, utwórz plik wykonywalny o następującym kodzie; Zmień 192.168.0 na rzeczywistą sieć.

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

Spróbuj zainstalować nmap (sudo apt-get install nmap) i wpisz nmap 192.168.1.0/24 zastępując 192.168.1 pierwszymi trzema częściami adresu ip (dowiedz się używając ip addr).

Możesz również uzyskać nieco mniej dokładną (z mojego doświadczenia) mapę sieci uruchamiając ping 192.168.1.255 (ponownie zastępując 192.168.1), który powinien wydać ping do każdej maszyny w sieci, ale z mojego doświadczenia nie zawsze działa poprawnie.

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

Znalazłeś się na nexusie używając tmux, ponieważ arp-scan nie jest w repo, ale nmap jest preinstalowany, wyświetla tylko adresy 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

Aby uzyskać bardziej zwartą listę podłączonych urządzeń:

nmap -sL 192.168.0.* | grep \(1

Objaśnienie.

nmap -sL 192.168.0.* wyświetli wszystkie IP w podsieci i zaznaczy te, które mają nazwę:

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

Ponieważ wszystkie ciekawe rekordy zaczynają się od nawiasów ( i cyfry 1, filtrujemy do tego z | grep \(1 (backslash jest potrzebny, aby uniknąć nawiasów)

Quirk Uważaj, że jeśli dwa urządzenia mają tę samą nazwę, nmap wyświetli tylko to, które zostało podłączone do routera last

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

Praca nad odpowiedzią Andersa Larrsona -

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