DOS 批处理实现 arp 绑定

简介:

    为了预防 ARP 病毒的攻击,一般都建议 Windows 用户把本机和网关实现 IP 与物理地址的绑定。Windows 下的绑定命令格式为:

    ARP -s [IP地址] [MAC地址]

    尽管命令很简单,但是对于初级用户仍然是一件困难的事情,特别是还要通过运行 ipconfig.exe 命令获取网关和本机的 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











本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/286597,如需转载请自行联系原作者

相关文章
|
Windows
DOS - 批处理之 for /f 中的 delims 和 tokens
DOS - 批处理之 for /f 中的 delims 和 tokens
676 0
DOS - 批处理之 for /f 中的 delims 和 tokens
|
网络协议 网络安全 数据安全/隐私保护
|
Windows
【批处理学习笔记】第十一课:常用DOS命令(1)
【 文件夹管理 】cd 显示当前目录名或改变当前目录。md 创建目录。rd 删除一个目录。dir 显示目录中的文件和子目录列表。tree 以图形显示驱动器或路径的文件夹结构。path 为可执行文件显示或设置一个搜索路径。
1074 0
|
Windows
【批处理学习笔记】第十二课:常用DOS命令(2)
文件管理type 显示文本文件的内容。copy 将一份或多份文件复制到另一个位置。del 删除一个或数个文件。move 移动文件并重命名文件和目录。(Windows XP Home Edition中没有)ren 重命名文件。
1144 0
|
Windows
【批处理学习笔记】第十四课:常用DOS命令(4)
系统管理at 安排在特定日期和时间运行命令和程序shutdown立即或定时关机或重启taskkill结束进程(WinXPHome版中无该命令)tasklist显示进程列表(Windows XP Home Edition中没有)reg 注册表控制台工具atAT命令是Windows XP中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排、任务的管理、工作事务的处理方面,AT命令具有更强大更神通的功能。
1049 0
|
Windows Linux
利用DOS批处理实现定时关机操作
  10月1放假回来,寝室晚上10:30就停电了,最无法让人理解的是第二天早上8:00才来电。原来晚上电脑都是不关机的,开着WiFi一直到天亮,可是现在不行了,电脑如果一直开着第二天早上起来电脑肯定没电,于是我就想让它定时关机。
1359 0
|
网络协议
公司交换机arp 绑定操作
1、首先登入:192.168.1.1 2、sys 3、dis arp | inc 192.168.1.49(查看该ip绑定情况) 4、undo arp 192.168.1.49(不绑定命令)
957 0

热门文章

最新文章