使用ARP从已知MAC地址获取未知IP地址?

时间:2014-04-02 19:34:06

标签: windows batch-file ping mac-address arp

我在Windows平台(Win7)上,我有一个场景,我知道设备的MAC地址,但它们的IP是在启动时动态选择的。

我想编写一个批处理脚本来ping这些特定设备以确保它们存活。网络上有许多其他设备我不想ping,只有一组10个特定的MAC我想从那里获取IP地址然后ping它们。它们都在地址方案10.1中。(1-255)。(1-255)

我知道,我可以ping整个地址频谱然后

arp -a > arp.txt

...以此格式输出包含IP列表和相关MAC地址的文档

Interface: 192.168.2.27 --- 0xb
  Internet Address      Physical Address      Type
  192.168.2.1           00-1f-90-c0-25-fd     dynamic   
  192.168.2.3           00-00-aa-a1-d3-78     dynamic   
  192.168.2.16          ac-72-89-a7-7e-98     dynamic   
  192.168.2.17          78-45-c4-2f-71-0b     dynamic   
  192.168.2.18          68-b5-99-8e-1c-35     dynamic   
  192.168.2.24          b8-ac-6f-30-00-34     dynamic   
  192.168.2.26          00-90-a9-6f-e0-be     dynamic   

我的问题是我如何(通过批处理脚本或其他自动方法)找到我感兴趣的MAC地址行,并将IP地址放入一个我可以使用的变量中

在UNIX中我可以grep但是在Windows中我不知所措。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

将输出传递给find并使用for循环。

for /f "tokens=1,2,3 delims= " %%i in ('arp -a ^| find "00-1f-90-c0-25-fd"') do (
    set ip=%%i
    set mac=%%j
)

您可以稍微更改一下,通过输入MAC地址来生成将要ping的批处理脚本pingbymac.bat 00-1f-90-c0-25-fd

@for /f "tokens=1,2,3 delims= " %%i in ('arp -a ^| find "%~1"') do (
    ping %%i 
)

答案 1 :(得分:1)

找到这一行:

arp -a |find "78-45-c4-2f-71-0b"

仅查找IP地址:

for /f %i in ('arp -a ^|find "2c-27-d7-ef-f8-77"') do echo %i

(如果在批处理文件中使用它,请写%%i而不是%i