使用Nbtstat 批量获取MAC地址
数字办公
在一般企业中,为了便于对局域网内的计算机进行有效管理,我们一般使用静态IP地址分配给每一台计算机,由于IP地址通常可以自行更改,单靠IP地址来检查网络并不可靠,不过我们知道网卡的硬件(MAC)地址是唯一的,所以我们可以统计IP地址与PC机的MAC地址的对应关系,以便在出现问题时提供依据。
使用Nbtstat命令的优越性
我们推荐使用Nbtstat命令来获取局域网中电脑的MAC地址以及其他信息。虽然我们也可以使用ping 和arp 命令来实现,但通过Nbtstat 命令来实现具有更好的效果,比如在客户机有防火墙的情况下(现在通常客户机上都安装有防火墙软件),一般ping 命令会失效,不能作为检测机器是否有效IP地址是否存在的条件,所以统计信息会很不全面,但用Nbtstat 命令可以通过。
另外通过arp 命令得到的远程PC上信息会有限,通常只能返回IP地址和物理地址的对应信息,而使用Nbtstat 除了可以实现这些功能,同时也能返回远程计算机名称、组名等一些重要的参考信息,为网络故障的分析和解决提供更多帮助。
制作批处理文件批量获取信息
Nbtstat命令一般是针对一台电脑进行信息的获取。为了更加快捷的获取信息,我们可以通过制作批处理文件的方式实现物理地址批量获取的目的。
要制作的批处理文件有两个:(1) allMAC.bat 和 (2) nbtpc.bat。我们可以打开记事本输入以下命令(命令解析括号中的内容不要输入,如果一定要输入就在括号前面加注析命令rem)。
(1)allMAC.bat
for/l %%i in (1,1,254) do nbtpc 192.168.1.%%I (命令解析:for命令是循环执行do nbtpc 192.168.1.%%I ,in 后面的(1,1,254)括号内的三个参数分别表示变量i循环的初始数值、每次循环的增加量、循环的终结数值。比如括号中有(1,2,5)三个参数,就表示循环是从192.168.1.1开始,到192.168.1.5结束,由于增量为2,循环的第二个IP地址为192.168.1.3,第三个IP 地址为192.168.1.5以此类推。)
如果括号中第二个参数为1,就表示循环是逐个进行,参数/l 是表示括号中的参数是按(循环的初始数值、循环的增加量、循环的终结数值)形式进行循环的,如果没有这个参数的话,循环方式就只能按数字个数来定,比如上边的(1,2,5),循环只有三次,do nbtpc 后面的IP地址参数分别为192.168.1.1;192.168.1.2和192.168.1.5 ,%%i是用于存放每次循环的数值的变量。
(2)nbtpc.bat
@echo off (命令解析:表示不在屏幕回显命令执行过程。)
call nbtstat -a %1 |find "MAC Address">nul (命令解析:这里涉及有两个主要命令Nbtstat -a %1 ,%1是用于传递从allmac.bat 来的IP 地址参数给Nbtstat 命令使用。find "MAC Address",表示是否在Nbtstat命令执行后有MAC Address信息,通常情况下,如果没有找到主机是没有这个英文反馈信息出现在屏幕上的,而只有Host not Found.信息出现,>nul表示find 命令发现"MAC Address"。)
if %ERRORLEVEL%==0 goto nbt (命令解析:当执行上一条命令而满足条件find "MAC Address">nul时,表示没有出现错误的情况下,程序转向到本批处理文件中标记符为:nbt的过程去执行。)
goto end (命令解析:程序转到结束标记符end 的地方,表示程序终结。)
:nbt (命令解析:nbt程序处理过程的标记符。)
@echo Current ipaddress is: %1 >>allpc.txt (命令解析:当发现相应IP地址的主机存在时,将“当前IP地址”写入allpc.txt 文本文件中,如果原来有这个文本文件的话,就在原来的记录后面追加,如果原来没有这个文件就新建立一个。)
nbtstat -a %1 >>allpc.txt (命令解析:接着上面写入的信息,将命令Nbtstat 执行的回馈信息写入allpc.txt文件中。)
:end (命令解析:程序结束位置标记符号。)
注意两个文件要在同一个目录中,然后运行allMAC.BAT 文件,程序运行完毕自动生成名称为allpc.txt 的报告文件。注:文中黑体字部分为输入代码。