我已经尝试了
arp -a
很多次,它列出了一些设备,但不是全部。 ifconfig
显示了我的IP地址和MAC地址以及其他一些有用的信息,但它没有显示本地网络上的所有设备。有没有显示所有IP地址的命令?
arp -a 将仅显示存储在本地 ARP 缓存中且您的计算机连接到的 MAC 地址。 当我试图查看本地网络中的每个设备时,我必须对其进行扫描。 例如,如果您有 192.168.1.0/24 网络,您可以执行以下操作:
$ for i in `seq 1 254`; do
ping -c 1 -q 192.168.1.$i &
done
您将尝试对网络中的每台计算机执行 ping 操作。当然,并不是每台计算机都会响应 ping。这就是为什么您不能依赖 ping。现在您需要检查 ARP 缓存。
$ arp -a | grep 192.168.1. | grep ether
此命令将显示仅使用此网络中的计算机以及响应 ARP 请求的计算机过滤的 ARP 缓存(在 99% 的情况下,它将是网络中设备的完整列表 - 请记住,当设备断开连接)。
要使用 Windows CMD .bat 文件生成列表,请执行以下操作。
创建一个带有循环的 .bat 文件,该文件使用
ping
命令向网络上每个可能的可用地址发送 ping。我使用 ping 命令上的 -a and -n 1
选项发送单个 ping -n 1
,并请求提供主机名。 ping 网络后,您可以使用 arp
命令获取简明列表,使用 arp -a >con
它将输出重定向到控制台,即使 .bat 文件重定向到文件也是如此。
Windows .bat 文件中的以下命令似乎可以解决问题。
for /L %%i in (1,1,254) do (
ping -a -n 1 192.168.0.%%i
)
arp -a >con
接下来运行 .bat 文件,将输出发送到文本文件:
listdev.bat > listdev.txt
这将生成一个包含 ping 命令结果的文本文件。它看起来像下面这样:
C:\Users\rcham>(ping -a -n 1 192.168.0.3 )
Pinging DESKTOP-GFSP7AC.xxxxxxxx.net [192.168.0.3] with 32 bytes of data:
Request timed out.
Ping statistics for 192.168.0.3:
Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),
C:\Users\rcham>(ping -a -n 1 192.168.0.4 )
Pinging rick-MS-7B98.xxxxxxxx.net [192.168.0.4] with 32 bytes of data:
Reply from 192.168.0.4: bytes=32 time=5ms TTL=64
Ping statistics for 192.168.0.4:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 5ms, Maximum = 5ms, Average = 5ms
C:\Users\rcham>(ping -a -n 1 192.168.0.5 )
Pinging 192.168.0.5 with 32 bytes of data:
Reply from 192.168.0.148: Destination host unreachable.
Ping statistics for 192.168.0.5:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
C:\Users\rcham>(ping -a -n 1 192.168.0.6 )
Pinging 192.168.0.6 with 32 bytes of data:
Reply from 192.168.0.148: Destination host unreachable.
Ping statistics for 192.168.0.6:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
C:\Users\rcham>(ping -a -n 1 192.168.0.7 )
Pinging 192.168.0.7 with 32 bytes of data:
Reply from 192.168.0.148: Destination host unreachable.
Ping statistics for 192.168.0.7:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
C:\Users\rcham>(ping -a -n 1 192.168.0.8 )
Pinging SurfacePro-2.xxxxxxxx.net [192.168.0.8] with 32 bytes of data:
Reply from 192.168.0.148: Destination host unreachable.
Ping statistics for 192.168.0.8:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
C:\Users\rcham>(ping -a -n 1 192.168.0.9 )
Pinging starfive.xxxxxxxx.net [192.168.0.9] with 32 bytes of data:
Reply from 192.168.0.148: Destination host unreachable.
Ping statistics for 192.168.0.9:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
请注意,上面的列表中对
ping
命令的响应存在差异。
第一个意味着有一个运行设备连接到具有该 IP 地址的网络,并且该设备配置为回复
ping
命令的 ICMP Echo 请求。
第二个意味着可能有一个设备连接到具有该 IP 地址的网络,但是该设备可能被配置为忽略 ICMP Echo 请求,或者它已关闭且无法回复。可能还有其他可能的原因,但这两个是小型网络中最常见的原因。
第三种情况意味着路由器无法将 ICMP Echo 请求发送到指定的 IP 地址,因此请求未发送。
有关最后两个响应之间的差异以及更多详细信息,请参阅帖子 ping 响应“请求超时”。与“目标主机无法访问”