DOS 批处理快速实现 arp 绑定

为了预防 ARP 病毒的攻击,一般都建议 Windows 用户把本机和网关实现 IP 与物理地址的绑定。
    Windows 下的绑定命令格式为: ARP -s [IP地址] [MAC地址]
    尽管命令很简单,但是对于初级用户仍然是一件困难的事情,特别是还要通过运行 ipconfig.exe、ping、arp -a 等命令获取网关和本机的 MAC 地址就更是一件难事。即使是有经验的网管,敲这些命令,再获取数据,再完成绑定,也是一件单调乏味的事情。为了简化操作、提高效率,有必要发挥程序的作 用,写一段代码来完成这项工作。那些 VC++、Delphi、C# 之流的大型编程自然能完成编程任务,但是总给人大动干戈的味道。其实,充分发挥 DOS 批处理的威力,只用写一些“脚本”就可以完成这些事情了。
    只要把以下代码保存成一个扩展名为 .bat 的批处理文件,需要的时候用鼠标双击一下,一切事情就全部搞定了。
    程序的流程如下:
    带参数 /all 运行 ipconfig.exe 程序,运行结果保存到生成的 ipconfig.txt 文本文件里。
    运行 find.exe 程序,在 ipconfig.txt 文件里搜索字符串 "Physical Address"。find.exe 程序的运行结果,保存到生成的文本文件 phyaddr.txt 里。在我的机器上,phyaddr.txt 内容为(实际文件没有行号):
    1,
    2,---------- IPCONFIG.TXT
    3,   Physical Address. . . . . . . . . : 00-00-E2-89-9E-BD
    4,
    语句 for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M 是取得本地物理 MAC 地址的语句,结果临时保存在 %Mac% 变量里。“for ...”语句的意思是,phyaddr.txt 文件的内容,跳过前面 2 行,余下的行取第 12 列,每列之间的分隔符为默认的"空格"。注意本行的列包括单词和所有的“.”字母。这样 Mac=00-00-E2-89-9E-BD,就是本机网卡的物理地址了。
    下面取本机 IP 地址的道理也类似。绑定命令是 arp -s %IP% %Mac%。
    再后面获取网关的 MAC 和 IP 地址的方法也与前边类似。注意运行一次 ping %GateIP% -n 1 命令,是为了取得网关 Arp 信息在本机的缓存,确保 arp -a %GateIP% 命令能取得网关的信息,否则只能得到文本:No ARP Entries Found。
    然后生成 GateMac.txt 文件,从中取到网关的 MAC 地址。最终网关也获得了 arp 绑定。
    注意以冒号“:”开头的语句是批处理文件的注释语句。批处理脚本的语句(例如 for 语句)的更多信息,请在网上搜索相关资料。
    从这里可以看到,DOS 命令行程序,包括批处理文件,并不是作为摆设存在的,更没有过时,合理利用,作用还是非常大的。譬如 NET、NETSH、NETASAT 等等命令,在网管工作中都是经常用到的,可以完成几乎所有图形界面程序能完成的工作,但有时更方便一些。
    附:
    @echo off
    :::读取本机Mac地址
    if exist ipconfig.txt del ipconfig.txt
    ipconfig /all >ipconfig.txt
    if exist phyaddr.txt del phyaddr.txt
    find "Physical Address" ipconfig.txt >phyaddr.txt
    for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
    :::读取本机ip地址
    if exist IPAddr.txt del IPaddr.txt
    find "IP Address" ipconfig.txt >IPAddr.txt
    for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
    :::绑定本机IP地址和MAC地址
    arp -s %IP% %Mac%
    :::读取网关地址
    if exist GateIP.txt del GateIP.txt
    find "Default Gateway" ipconfig.txt >GateIP.txt
    for /f "skip=2 tokens=13" %%G in (GateIP.txt) do set GateIP=%%G
    ping %GateIP% -n 1
    :::读取网关Mac地址
    if exist GateMac.txt del GateMac.txt
    arp -a %GateIP% >GateMac.txt
    for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H
    :::绑定网关Mac和IP
    arp -s %GateIP% %GateMac%
    :::删除临时文件
    del GateIP.txt
    del GateMac.txt
    del IPAddr.txt
    del ipconfig.txt
    del phyaddr.txt
    :::测试绑定结果
    arp -a
    :::exit 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值