DOS命令批量统计局域网内各台电脑的IP地址和其相对应(2009-08-07 00:45:16)转载标签: 杂谈 分类: dos命令
网络管理员在日常维护局域网时都会收集统计每台电脑的IP地址和其相对应的MAC地址,这样的好处是可以便捷、准确的控制管理每台电脑,发现某台电脑中毒或者数据流量异常能及时排查、封网。
能实现这种功能的工具在网上有很多,例如:超级网管(SuperLANadmin)等等,喜欢的朋友可以自己搜索一下。在这里我主要谈的是调用本机DOS命令来实现上述结果,毕竟我们不可能天天把工具带在身边。
地址解析协议(ARP)用于实现IP地址到网络接口硬件地址的映射,该命令只有在安装了 TCP/IP 协议之后才可用。当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在ARP高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应的以太网地址的映射表。如果查到匹配的结点,则相应的以太网地址被写入以太网帧首部,数据包被加入到输入到输出列队等待发送。如果查询失败,ARP会先保留等待发送的IP数据包,然后广播一个询问目的主机硬件地址的ARP报文,等收到回答后再把IP数据包发送出去。
命令如下:
运行后执行:
for /L %i IN (1,1,254) DO ping -w 2 -n 1 210.26.14.%i
arp -a
回车,一只烟的功夫就会看到收集好列表。
(注意:把192.168.1 IP地址替换成你所在局域网的IP地址)
FOR
对一组文件逐一运行一条命令。该命令可用在批处理文件中,也可命令提示符下直接调用。
语法:
FOR在批处理程序中的使用语法如下:
FOR %%变量 IN (集合) DO 命令 [命令参数]
FOR在命令提示符下的使用语法如下:
FOR %变量 IN (集合) DO 命令 [
参数 :
%%变量或%变量
代表一个可替换的变量。FOR命令将用指定的一组文件中的每一个文本字符串来替换%%变量(或%变量),直到此命令(在命令参数中指定的)处理完所有的文件为止。
用%%变量来执行一批处理程序中的FOR命令。用%变量来执行命令提示符下的FOR命令。
集合
指定一个或多个要用特定命令对其进行处理的文件或文本字符串。圆括号必须得有。
命令
指定要对一组文件中每一文件进行处理的命令。
FOR─注解
使用关键字IN及DO
IN和DO并不是参数,但FOR命令中要求这两个关键字。如果省略了这两个关键字,
则MS-DOS将显示一错误信息。
使用可替代变量
除了数字0到9之外,你可把任何字符用作变量,以避免与批处理参数%0到%9的混淆。对简单的批处理程序来说,象%%F这样的一个单一字符就足够了。在复杂的批处理程序中,你可把多个值用于变量以区分不同的可替换变量。然而,在同一命令行上不能嵌套(增加)多个FOR命令。
指定一组文件
集参数可代表一组文件或几组文件。你可用通配符(*及?)来指定一文件集。下面是合法的文件集:
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(ar??1991.* ap??1991.*)
当你使用FOR命令时,集中的第一个值将代替%%变量(或%变量),而为了处理此值MS-DOS将执行指定的命令;此过程一直持续进行,直到MS-DOS将对应于集中的值(或多值)的所有文件(或多组文件)处理完毕为止。
--------------------------------------------------------------------------------
FOR─例子
假设你想用TYPE命令来显示当前目录下扩展名.DOC或.TXT的所有文件的内容。为了做到这一点要使用可替代变量%F,并在命令提示符下输下面的命令。
for %f in (*.doc *.txt) do type %f
在此例中,当前目录下扩展名为.DOC或.TXT的每一个文件将代替%F变量,直到显示出每一个文件的内容为止。若把每一个%F都替换成%%F,则此命令可用于一批处理文件。否则,MS-DOS将忽略此变量而显示错误信息。
MS-DOS支持你想用于特定命令的开关、管道及重定向符。例如,为了把前一例的输出送到PRN(默认打印机口),应输入下面的命令:
for %f in (*.doc *.txt) do type %f > prn: