如何查看连接到网络的所有计算机

我在一个局域网中,有3台Ubuntu、2台Kubuntu、2台Windows XP和2台Windows 7。有哪些命令或工具可以查看连接到局域网的计算机,并显示计算机的名称和IP地址。类似于像Angry IP这样的工具,可以显示局域网中的所有计算机。
请注意,我不知道连接到局域网的计算机的IP地址或名称。因此,该工具或命令应该能够自动查找它们。

1http://superuser.com/questions/261818/how-can-i-list-all-ips-in-the-connected-network-through-terminal-preferably - Ciro Santilli OurBigBook.com
没有一个答案实际上回答了我在Ubuntu 18.04和学校局域网上的问题。 - mLstudent33
9个回答

Arp-scan 对我也很有效...

如果使用 Wi-Fi:

sudo arp-scan -l --interface=wlan0

-或者如果使用以太网:
sudo arp-scan -l --interface=eth0

(这个最后一个几乎与Rajesh Rajendran发布的内容完全相同;-l代表--localnet)
如果你没有arp-scan(它不是Ubuntu的默认安装),只需打开终端并输入:
sudo apt-get install arp-scan

4如果这个方法不起作用,可以使用 ifconfig 命令获取接口列表,并尝试将 eth0 切换到其他选项。 - Philip Kirkbride
1对我来说没有显示任何IP地址。```sudo arp-scan -l --interface=wlp4s0 接口:wlp4s0,数据链路类型:EN10MB(以太网) 开始 arp-scan 1.9.5,共有256个主机过滤器接收到14个数据包,内核丢弃了0个数据包 arp-scan 1.9.5 结束:在1.975秒内扫描了256个主机(每秒129.62个主机)。0个响应``` - Philip Rego
如何找到正确的WiFi接口?我的不是wlan0 - mLstudent33
arp-scan在Ubuntu 20.xx中不存在,因此本文已过时且只会让人困惑。 - Stefan von straten Finne
你还可以使用 sudo lshw -c network 命令查看所有的网络接口。 - Chad
@mLstudent33 应该是类似于 wlp2s0 的东西。运行 iwconfig 命令,它应该是列表中的最后一个。 - mchid


2只有在子网使用/24寻址时,这才有效。 - Vineet Menon
7+1 那是一款相当不错的小型IP地址扫描器。 - Evan Plaice
你的本地IP可能与这个非常不同... - JohnAllen
这只显示了我的默认网关IP - Philip Rego

最简单的事情就是
$ sudo arp-scan --localnet

9"arp-scan -l" 做的是同样的事情。 - ki9
我想要一个主机列表。这个不能做到。 - mLstudent33
我收到“错误:无法获取接口tun0的MAC地址”。 - aquirdturtle

我一直都使用nmap。要扫描网络中的所有设备,请使用以下命令: nmap -sP 192.168.0.1/24 更多信息请参考:https://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ 这是一个非常好用的工具。如果你使用Debian,你可以使用以下命令安装nmapsudo apt-get install nmap 如果你使用Arch,你可以使用以下命令安装nmapsudo pacman -S nmap

为了 Fedora 该如何做? - supershnee
@supershnee 执行 yum install nmap - Ruraj
现在针对 Fedora 25 及以上版本:dnf install nmap 将安装 nmap。 - BendaThierry.com

作为可能的GUI选项,我见过的最好的一个是Angry IP,可以在http://angryip.org/download/#linux找到。
只需下载最新的DEB包并安装即可。然后从Dash运行ipscan。这是一个截图:

enter image description here


它是否仅过滤Linux机器?如果是,请指导我如何操作。 - khanthegeek
1真的很好,我把所有功能都添加到了列表列中,其中最有帮助的是主机名和MAC厂商,现在我连接到我的WiFi的一切都更加清晰易懂,谢谢! - Aquarius Power
这种任务用Wireshark更好吗?Kali Linux呢? - mLstudent33
@AquariusPower 在哪里可以找到macvendor功能? - Jeff Ward
1@JeffWard 菜单:工具/提取器//可用提取器//"列表中的最后一项",然后按macvendor排序,它是硬件的简称,如D-Link。 - Aquarius Power

ARP

Address                  HWtype  HWaddress           Flags Mask            Iface
iPhone-von-me.fritz.box  ether   12:55:05:30:3c:df   C                     wlp3s0
android-abcdefghijklmno  ether   11:66:3f:71:04:d6   C                     wlp3s0
fritz.box                ether   00:11:3f:46:37:c2   C                     wlp3s0
Blupiblu.fritz.box       ether   71:88:cc:bb:dc:a6   C                     wlp3s0

ip neigh

ip neighhosts。无需nmap / sudo

在此基础上,您可以构建一个Python脚本:

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

通过下载

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py

唯一的输出是:1: _gateway. (207.23.10.xx4) 其中xx代表数字。 - mLstudent33

如果您的路由器上未禁用广播... 您可以ping广播地址。
ping -b 192.168.0

将ping命令广播到192.168.0/24子网中的每个主机。
注意:最好关闭广播功能,因为黑客可以利用DDOS Smurf攻击来利用网络。基本上,使用具有伪造目标地址(即受害者的IP地址)的数据包ping广播地址。这其中还有一些细节,但这就是谷歌的用处。
注意:在Windows上也可以实现相同的功能,但要ping实际的广播地址(而不是子网)。
ping -b 192.168.0.255

Nmap是你的好朋友
nmap -sP 192.168.0.1/24
如果你有任何问题,nmap help里面有很多信息。

  1. 在Shell和Powershell中发送电子邮件的脚本,在运行脚本时要求用户凭据。
  2. 用于检查网络上的在线设备的脚本,适用于Linux和Windows客户端。
  3. 用于检查由前一个脚本检测到的设备的磁盘空间的脚本,适用于Windows和Linux。