題 如何通過終端列出所連接網絡中的所有IP?


使用Ubuntu 10.10,我想知道是否有一個命令行命令可以列出連接到網絡的所有設備的IP?

我會用它來列出連接到家庭網絡的所有計算機。理想情況下,它需要是命令行,因為我將從C ++運行它。

有任何想法嗎?


201
2018-03-24 13:27


起源


askubuntu.com/questions/82480/... || serverfault.com/questions/72380/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
更多重複: 1。  獲取連接到同一路由器的所有IP設備。 2。  顯示Linux中LAN上的計算機列表 - Alexander Malakhov
3。  本地IP掃描的最佳方法和工具 - Alexander Malakhov


答案:


看看 ARP掃描 命令 - 您可能需要安裝它,例如:

sudo apt-get install arp-scan

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

並進一步詳細說明:

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

eth0是您的設備。你可以找到你的設備:

ifconfig

223
2018-03-24 13:37



完美,謝謝。返回我需要的格式。 - Christopher Gwilliams
在OSX上也能完美運行!用Brew安裝,接口是en0,而不是eth0,但效果很好。 - nthonygreen
如果您使用wifi連接到您的網絡 wlan0 代替 eth0。 - Neil
你能得到這個來列出主機名和IP地址嗎? - user1527227
值得注意的是,這不使用ARP緩存:它執行實際掃描。與大多數nmap掃描不同,這不能跨越第3層邊界,這通常是您在此方案中所需的。 (換句話說,它僅限於您的子網。) - Zenexer


使用nmap。例: nmap -sn 10.10.10.0/24 arp緩存只會告訴您最近嘗試聯繫的人。


104
2018-03-24 13:38



我的給定IP是10.10.10.0?在這種情況下24是什麼?謝謝。 - kolonel
@kolonel這只是一個例子。您應該將其替換為您的網絡。 24是子網掩碼的“斜線表示法”。這意味著從左側使用24位。它相當於255.255.255.0。 - Keith
@Keith你知道我如何找到我的網絡地址嗎?或者它最終只是我的IP 0/24? - TMH
@kolonel:en.wikipedia.org/wiki/Classless_Inter-Domain_Routing - arkod


在Windows中,這將是“arp -a“我相信Linux中的相當於”arp -e“。

這些信息可以在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
2018-03-24 13:33



看起來它的工作原理(可能需要播放,因為我在公共網絡上,所以它似乎只列出網絡上的所有服務器。 - Christopher Gwilliams
如果我在家庭網絡上,它會列出連接到我的路由器的設備嗎?謝謝! - Christopher Gwilliams
該命令僅列出主機當前arp緩存中的設備,並且僅列出主機最近聯繫的設備。 - Linker3000
兩者都適用於Linux,但是 arp -a 以替代(BSD)樣式顯示(所有)主機。 Simpy跑步 arp 和跑步一樣 arp -e 因為這是默認值。 - simplegamer


如果您的網絡是 192.168.0.0/24,使用以下代碼生成可執行文件;改變 192.168.0 到你的實際網絡。

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

13
2018-05-17 18:45



Hi Anders ...用戶的網絡可能不是192.168.0.0/24;我做了一個筆記。該網站的格式不像一個簡單的#!,因此破壞了代碼片段的格式:輸入代碼時,使用blockquote或預先格式化的文本按鈕,並在提交之前檢查您的答案是否正確格式化,如回車,製表符,和空格可能已被剝離。 - Nevin Williams
同樣,當提供需要放入文件並使其可執行的腳本時,而不是簡單地剪切和粘貼,最好是指定它;某些人可能並不明白實施解決方案所需的一切。 - Nevin Williams
從技術上講,這只會返迴響應ping的主機。可能存在已連接但未回复ICMP回應請求的主機。同樣,可以通過指定廣播地址將一個數據包廣播到整個網絡,廣播地址是IP網絡中的最後一個地址:ping -c 1 -W 1 192.168.0.255將完成與for循環相同的操作。 - Nevin Williams
@NevinWilliams(需要-b,刪除-W等待更多) ping -b -c 1 192.168.0.255 結果“發送1個數據包,0個接收,100%丟包,時間0ms” - Aquarius Power


嘗試安裝 nmap (sudo apt-get install nmap)並輸入 nmap 192.168.1.0/24 代 192.168.1 與您的IP地址的前三個部分(找出使用 ip addr)。

您還可以通過運行獲得稍微不太準確(根據我的經驗)的網絡地圖 ping 192.168.1.255 (再次代替 192.168.1), 哪一個 應該 發出一個 ping 對於網絡上的每台機器,但根據我的經驗,並不總能正常運行。


10
2017-09-08 18:56



實際上,沒有一個答案總能正常運作。 IP的設計並未考慮到這一要求,並且存在諸如專用VLAN之類的內容,這使得無法在同一LAN上找到任何其他主機。 - Ron Maupin


在使用nexus時得到以下內容 tmux 如 arp-scan 不是在回購中而是 nmap 預先安裝,只顯示IP地址:

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

2
2017-10-30 20:33





有關更緊湊的連接設備列表:

nmap -sL 192.168.0.* | grep \(1

說明。

nmap -sL 192.168.0.* 將列出子網中的所有IP並標記具有名稱的IP:

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

因為所有有趣的記錄都以括號開頭 ( 和數字 1,我們用它來過濾 | grep \(1 (需要反斜杠來轉義括號)

俏皮話
請注意,如果兩個設備具有相同的名稱, nmap 將只顯示連接到路由器的那個 持續


0
2017-10-20 10:32



如果您對兩個問題有完全相同的答案,則可能值得考慮將問題標記為重複而不是發布重複的答案。這樣,知識可以在類似問題聯繫在一起時共享。 - Mokubai♦
@Mokubai你是對的,我在OP上添加評論。這顯示了一個有趣的問題。一個 快 搜索在4個網站(SU,Ask Ubuntu,SF,Unix)中發現了6個重複項(此Q和5個鏈接)。當然還有更多!我該如何處理?理想情況下,這6個帖子中的每一個都應鏈接到其他5個帖子。手動添加所有這些鏈接顯然無法擴展。所以,現在我已經鏈接到這篇文章(最受歡迎)。另一個問題是,在AskUbuntu上將Q標記為SU上Q的副本是不可能的。嗯...可能這已經在meta上討論過了? - Alexander Malakhov
在Centos 7上不適用於我,只列出網絡中沒有名稱的所有可能的IP地址。 arp-scan為我工作。 - Jeff


在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)$:\1 (\2):p'
}

if [ $1 ]; then
    for baseip; do
        scan $baseip
    done
else
    scan 192.168.1
fi

0
2017-07-06 10:04