如何获取局域网内所有电脑的MAC地址

 我来答
qn...f@163.com
2016-11-16 · 超过76用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:95.7万
展开全部
一、所涉及DOS命令讲解

1
set ip=192.168.1
set为设置环境变量命令。
该命令将IP设置为值为“192.168.1"的参数,其中“192.168.1"为局域网网段,请根据局域网实际值修改。

2
for /l %j in (1,1,10) do echo %i
for命令是DOS命令中一个功能十分强大的命令,在这里用到/L参数,功能是以一个增量数字集进行循环(start,step,end),即变量j初值start为1,每循环一次加增量step1,直到大于end10停止循环,每次循环执行do后面的命令。
该命令功能对变量进行每次加1,并用echo命令显示在屏幕上。

3
ping 192.168.1.1 -n 1 -w 1000
ping命令主要用于测试IP的连通性,-n 表示每一次ping过程发送的数据包数,-w表示每个数据包发出后等待回执的时间阀值。
该命令表示对192.168.1.1的电脑进行ping测试,发1个包,回执时间超过1秒视为超时不通。
如果IP地址能ping通,程序能够从应答数据包中获取该IP设备的mac地址,并存放到内存arp地址表中。

4
arp -a 192.168.1.18
arp命令主要用于显示或修改arp地址表。-a表示显示某个或全部arp地址表。
该命令表示显示IP为192.168.1.18设备的mac。

5
echo ssss|findstr dynamic
findstr查找字符串命令,一般用于从文件中查找含个某个字符的行,这里用到“|”(管道符),即把上一个命令的输出作为下一个命令的输入。
该命令表示在命令“echo ssss”输出结果中查找含有“dynamic”字符串的行。

END
二、具体方法

方法1:
set ip=192.168.1 && for /l %j in (1,1,254) do (ping %ip%.%j -n 1 -w 1000 ) && arp -a>1.txt

该方法适合在小IP地址范围内获取mac地址,因为如果范围过大,ping命令执行的时间会比较长,会造成早前arp地址表中获取的mac超时失效,从而无法获取局域网内完整的mac地址表。如下图,分别是上属命令运行过程中的arp表内容,前、后表对比,很容易看出,部分mac地址已经丢失,而且还存在为全0的非真MAC地址。

方法2:
set
ip=192.168.1 && for /l %j in (1,1,254) do ( ping %ip%.%j -n 1
-w 1000 |arp -a %ip%.%j |findstr dynamic >>2.txt )

相对方法1,该方法应该是比较完美的。在ping执行后,即时将获取的真实mac地址保存了下来。
Jtti
2024-06-18 广告
在选择美国云服务器操作系统时,应根据以下因素进行考虑:1. 安全性:需要考虑操作系统的安全性、漏洞修复和更新等因素,以确保服务器的安全稳定运行。2. 性能:需要考虑操作系统的性能,包括处理能力、内存和存储等方面的性能,以确保服务器能够满足业... 点击进入详情页
本回答由Jtti提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式