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

如何将连接网络中的所有IP列出来,最好是通过终端?

使用Ubuntu 10.10,我想知道是否有一个命令行命令可以列出所有连接到网络的设备的IP?

例如,我想用这个命令来列出所有连接到我家网络的电脑。理想情况下,它需要是命令行,因为我将在C++中运行它。

有什么想法吗?

答案 (8)

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

查看arp-scan命令 - 你可能需要安装它,例如:

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
115
115
115
2011-03-24 13:38:16 +0000

例如:nmap -sn 10.10.10.0/24 arp缓存只会告诉你最近尝试联系过的人,使用nmap。

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

在WINDOWS中是"arp -a“,我相信在Linux中是”arp -e“。

16
16
16
2013-05-17 18:45:14 +0000

如果你的网络是192.168.0.0/24,用以下代码制作一个可执行文件;将192.168.0改为你的实际网络。

13
13
13
2013-09-08 18:56:24 +0000

试着安装nmap (sudo apt-get install nmap),然后输入nmap 192.168.1.0/24,用你的ip地址的前三个部分代替192.168.1(用ip addr来查找)。

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

在nexus上使用tmux的时候,发现了以下的问题,因为arp-scan不在repo中,但nmap已经预装了,只显示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

对于一个更紧凑的连接设备列表:

nmap -sL 192.168.0.* | grep \(1

说明。

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

详述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