Bağlı olan ağdaki tüm IP'leri, tercihen Terminal aracılığıyla nasıl listeleyebilirim?


219

Ubuntu 10.10 kullanarak, ağa bağlı cihazların tüm IP'lerini listeleyen bir komut satırı komutu olup olmadığını merak ediyordum?

Bunu, örneğin ev ağıma bağlı tüm bilgisayarları listelemek için kullanırdım. İdeal olarak, C ++ 'dan çalıştıracağım için komut satırı olmalı.

Herhangi bir fikir?




Yanıtlar:


243

Arp-scan komutuna göz atın - muhtemelen yüklemeniz gerekir, örneğin:

sudo apt-get install arp-scan

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

Ve daha fazla ayrıntı vermek için:

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

Cihazınız nerede eth0. Cihazınızı şurada bulabilirsiniz:

ifconfig

Mükemmel, teşekkürler. Tam olarak ihtiyacım olan formatı döndürür.
Christopher Gwilliams

1
OSX'te de mükemmel çalışıyor! Brew ile kurulan ve arayüz eth0 yerine en0 idi, ancak harika çalışıyor.
nthonygreen

6
Ağınıza bağlıyken wifi kullanmak wlan0yerine kullanın eth0.
Neil

3
Bunu IP adreslerinin yanı sıra ana bilgisayar adlarını listeleyebilir misiniz?
user1527227

2
Bunun ARP önbelleğini kullanmadığına dikkat etmek önemlidir: gerçek bir tarama gerçekleştirir. Çoğu nmap taramadan farklı olarak, bu, genellikle bu senaryoda istediğin katman olan 3. sınırı geçemez. (Başka bir deyişle, alt
ağınızla

112

Nmap kullanın. örnek: nmap -sn 10.10.10.0/24arp önbelleği, yalnızca son zamanlarda bağlantı kurmayı denediklerinizi size söyleyecektir.


2
10.10.10.0 verilen IP adresim? Bu durumda 24 nedir? Teşekkürler.
kolonel

4
@kolonel Bu sadece bir örnek. Bunu ağınızla değiştirmelisiniz. 24, alt ağ maskesinin "eğik çizgi gösterimi" dir. Soldan 24 bit kullanmak anlamına gelir. 255.255.255.0'a eşdeğerdir.
Keith

2
@Keith kullanmak için ağ adresimi nasıl bulacağımı biliyor musunuz? Yoksa sonunda 0/24 olan sadece IP adresim mi?
TMH


20

Pencerelerde bu " arp -a" Linux'ta bunun eşdeğerinin "olacağına inanıyorum" olacaktır arp -e.

Bu bilgi arp için man sayfasından bulunabilir:

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

Bu işe yarıyor gibi görünüyor (halka açık bir
ağdayken

Bir ev ağındaysam, yönlendiricime bağlı aygıtları listeleyecek mi? Teşekkürler!
Christopher Gwilliams

1
Bu komut yalnızca ana bilgisayarların arp önbelleğindeki aygıtları listeler ve yalnızca ana bilgisayarın son zamanlarda iletişim kurduğu komutları kullanır.
Linker3000

Her ikisi de Linux üzerinde çalışır, ancak arp -a(tümü) ana bilgisayarları alternatif (BSD) stilinde görüntüler. Simpy koşu , varsayılan olan arpkoşu karakteri ile aynıdır arp -e.
simplegamer,

15

Ağınız varsa 192.168.0.0/24, aşağıdaki kodla çalıştırılabilir bir dosya oluşturun; Change 192.168.0gerçek ağa.

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

Merhaba Anders ... Kullanıcının ağı 192.168.0.0/24 olmayabilir; Bir not aldım. Sitenin biçimlendirmesi tamamen #! Şeklini beğenmedi ve kod pasajının biçimlendirmesini engelledi: kod girerken, blok alıntıyı veya önceden biçimlendirilmiş metin düğmelerini kullanın ve göndermeden önce, satırları, sekmeleri gönderirken göndermeden önce doğru biçimlendirme için cevabınızı gözden geçirin, ve boşluklar sıyrılmış olabilir.
Nevin Williams

Ayrıca, bir dosyaya koyulması ve basitçe kesmek ve yapıştırmak yerine çalıştırılabilir hale getirilmesi gereken bir komut dosyası sağlarken, muhtemelen bunu belirtmeniz en iyisidir; çözümünüzü uygulamak için neyin gerekli olduğu bazılarına açık olmayabilir.
Nevin Williams

12
Teknik olarak, bu yalnızca ping'e yanıt veren ana bilgisayarları döndürür. Bağlı olan, ancak ICMP yankı isteklerine yanıt vermeyen ana bilgisayarlar olabilir. Ayrıca, IP ağındaki son adres olan yayın adresini belirterek bir paketin tamamını bir ağın tamamına yayınlayabilirsiniz: ping -c 1 -W 1 192.168.0.255 for döngüsü ile aynı işlemi gerçekleştirir.
Nevin Williams

@NevinWilliams (gerekli -b, daha fazla beklemek için -W kaldırıldı), ping -b -c 1 192.168.0.255"1 paket iletildi, 0 alındı,% 100 paket kaybı, zaman 0ms" sonuçlandı
Kova Gücü

13

Yüklemeyi nmap( sudo apt-get install nmap) deneyin ve ip adresinizin ilk üç kısmıyla nmap 192.168.1.0/24ikame yazın 192.168.1(kullanmayı öğrenin ip addr).

Ayrıca , ağdaki her makineye bir yayın yapmasıping 192.168.1.255 (tekrar yerine yerleştirme 192.168.1) yaparak bir ağın biraz daha az doğru (deneyimimde) haritasını elde edebilirsiniz , ancak deneyimlerime göre her zaman doğru çalışmıyor.ping


Aslında, cevapların hiçbiri her zaman doğru çalışmayacaktır. IP bu gereksinim göz önünde bulundurularak tasarlanmamıştır ve aynı LAN üzerinde başka bir ev sahibi bulmayı imkansız kılan Özel VLAN'lar gibi şeyler vardır.
Ron Maupin

2

Kullanarak bir nexus aşağıdaki ile geldi tmuxolarak arp-scanrepo değil ama nmapönceden yüklenmiş olarak gelen, sadece ip adreslerini görüntüler:

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'

1

Bağlı cihazların daha kompakt bir listesi için:

nmap -sL 192.168.0.* | grep \(1

Açıklama.

nmap -sL 192.168.0.* tüm ağları alt ağda listeleyecek ve isimleri olanları işaretleyecektir:

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

Tüm ilginç kayıtlar parantez (ve rakamla başladıkça 1, bununla filtreliyoruz | grep \(1(parantezden çıkmak için ters eğik çizgi gerekir)

Tuhaf
Dikkat Eğer iki cihaz aynı ada sahipse, en sonnmap yönlendiriciye bağlı olandan birini gösterecektir.


Eğer iki soru için aynı cevaba sahipseniz, tekrarlanan cevaplar göndermek yerine soruları çift olarak işaretlemeyi düşünebilirsiniz. Bu şekilde, benzer sorular birbirine bağlandıkça bilgi paylaşılabilir.
Mokubai

1
@Mokubai Haklısınız, OP'e yorum ekledim. Bu ilginç bir problem gösterir. Bir hızlı arama (Ubuntu, SF, Unix Sor SU,) 6 çiftleri (bu Q ve 5 bağlantılar) 4 ağ sitelerinde keşfetti. Tabii ki çok daha fazlası var! Bununla nasıl başa çıkabilirim? İdeal olarak, bu 6 gönderiden her birinin diğer 5 ile bağlantısı olmalıdır. Tüm bu bağlantıları el ile eklemek açıkça ölçeklendirilemiyor. Yani, şimdilik bu yazıyla bağlantı kurdum (en çok oy alan). Başka bir sorun, AskUbuntu'daki Q'yu SU'daki Q'nun bir kopyası olarak işaretlemenin imkansız olmasıdır. Hm ... Muhtemelen, bu zaten metada tartışıldı?
Alexander Malakhov

Centos 7'de benim için çalışmıyor, ağdaki tüm olası IP adreslerini isimsiz listeler. arp-scan benim için çalıştı.
Jeff,

0

Anders Larson'ın cevabını Ellaborating -

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.