从MAC地址获取IP。 arp -a没有显示设备

时间:2014-08-20 12:16:46

标签: windows batch-file networking command-line arp

我试图编写一个批处理文件,该文件应该在我的Android手机连接到网络(Tenda WiFi路由器)时找到动态分配的IP。

所以我正在尝试arp -a并搜索我手机的MAC地址,以便从桌面获取其IP。

C:\Users\Leeroy>arp -a

Interface: 192.168.0.100 --- 0xb
  Internet Address      Physical Address      Type
  192.168.0.1           c8-3a-35-35-f6-68     dynamic
  192.168.0.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.255.250       01-00-5e-7f-ff-fa     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static

问题是它没有显示在表格中!我试过了ping 192.168.0.255,但它仍然没有显示出来。我尝试通过手机的浏览器请求192.168.0.100(我的桌面电脑的IP),这确实足以让手机上线。但是,每当我希望它出现在arp表中时,我都没有选择手动执行此操作。

如何让Android手机出现在arp表中(除了连​​接到WiFi之外没有做任何事情)?

6 个答案:

答案 0 :(得分:7)

我试过这个并且有效:

for /L %N in (1,1,254) do start /b ping -n 1 -w 200 192.168.0.%N

如果手机已启用ICMP,则应该没有问题。

答案 1 :(得分:1)

如果您想从MAC中找到IP,请执行此操作

$  arp -n | grep -w -i 'YOUR-MAC' | awk '{print $1}'

请注意,您必须将 YOUR-MAC 替换为您的mac地址,并保留单引号

现在,如果您想从某些IP中找到MAC地址,请尝试以下方法:

$  arp -n | grep -w -i 'YOUR-IP' | awk '{print $3}'

享受!

答案 2 :(得分:1)

此批处理代码将获取以下内容,

  1. PC名称
  2. IP地址
  3. MAC地址
  4. 电脑说明(如果有)
  5. 请以 anyname.bat 格式保存以下代码并运行它。它会将结果输出到单独的文本文件中。

        :: This Windows Batch(CMD) File fetches All the Details of the Nearby PC's of Same VLAN (Upto 254 host's).
        :: Windows OS (CMD)
        :: Author : [M.S.Arun][1]
    
        :: #****************************************************************** Start of Script ********************************************************************#
    
        @echo off
        title Remote PC Details Fetching Script(PC Name / IP's / Computer Description)
        echo. > %cd%\PC_Details_Temp.txt
        echo Remote PC Details Fetching Script (PC Name / IP's / Computer Description) details of the Nearby PC's of Same VLAN.(Upto 254 Hosts)
        echo.
        set /p input_ip="Please Enter the IP Range(Eg:192.168.1) :  " && echo
        set /p input_ip_start="Please Enter Start IP Range(Eg:1) :  " && echo
        set /p input_ip_end="Please Enter End IP Range(Eg:254) :  " && echo
        echo. >> %cd%\PC_Details_Temp.txt
        @echo on
        for /l %%i in (%input_ip_start%, 1, %input_ip_end%) do nbtstat -a %input_ip%.%%i | findstr /c:"MAC" /c:"<00>" | findstr /c:"MAC" /c:"UNIQUE" >> %cd%\PC_Details_Temp.txt && echo     IP Address  = %input_ip%.%%i >> %cd%\PC_Details_Temp.txt
        @echo off
        echo. > %cd%\PC_Details_Logs.txt
        echo. > %cd%\PC_Details_Logs.txt
        echo This Batch Script fetches All the Details of the Nearby PC's of Same VLAN.(Starting from 1 to 254 host's) >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC Host Name: >> %cd%\PC_Details_Logs.txt
        find "UNIQUE" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC IP Address: >> %cd%\PC_Details_Logs.txt
        find "IP" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC MAC Address: >> %cd%\PC_Details_Logs.txt
        find "MAC" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC Seat No's. and Vnet No's: >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        net view /all >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        arp -a >> %cd%\PC_Details_Logs.txt
        :: del %cd%\PC_Details_Temp.txt
        echo.
        echo Completed Successfully..!
        echo.
        pause
    
        :: #****************************************************************** End of Script ********************************************************************#
    

    参考资料的屏幕截图, enter image description here

    enter image description here

答案 3 :(得分:1)

M.S.Arun's答案接近最佳状态。我有这个问题,检索一些虚拟机的IP地址,我所拥有的只是MAC地址。像M.S.Aruns这样的答案遍布堆栈溢出和其他地方,但没有人解释它们,也没有正确解释解决方案(恕我直言)。

我尝试了ping所有子网的技术,然后执行arp命令。问题是我的IP范围有60k +可能的IP地址,并且在扫描了所有这些之后(这不是那么简单,并且使用start命令真的很难看)arp表真的很难填充......顺便说一下它耗时30秒,即使在尝试使用&#34;开始ping&#34;。我最终发现作为缓存表的arp会定期刷新,这就是为什么这种方法很少成功的原因。

解决方案是ping所有子网,但在每次ping之后执行arp命令以查看IP是否与您的MAC地址匹配,这可确保您不会因为arp表的缓存特性而丢失信息。为了使它正确,我用Java实现了它; isReachable()方法非常简洁,并且我的屏幕上没有任何cmd提示产生。此外,使用Java线程,60k + IP扫描范围最多需要10秒。我认为它比批处理脚本更安全......

请参阅threadedScan() method here,其中包含一系列IP并查找MAC地址。

希望这可以提供帮助;)

答案 4 :(得分:0)

这可能有效

netstat -n  

ipconfig /all 

答案 5 :(得分:0)

我可以成功获得所有引起流量的事物:arp -an