从MAC地址获取IP。 ARP – 一个不显示设备

我试图编写一个batch file,当它连接到networking(Tenda WiFi路由器)时,应该find我的Android手机的dynamic分配IP。

所以我正在尝试arp -a并search手机的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),这足以把手机放在雷达上。 但是我没有select手动做,每次我想它出现在ARP表。

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

解决:解决与平。 这不会超过一两秒钟。 编辑2:更新一些。 这是最后的batch file:

 @echo off :top :: Loop through arp table entries and look for my Android device's MAC address for /f "tokens=1-5 skip=3" %%f in ('arp -a') do (if "%%g"=="xx-xx-xx-xx-xx-xx" set ip=%%f) if "%ip%"=="" ( echo Discovering network... :: Ping all IPs from 192.168.0.1 to 254 for /L %%N in (1,1,254) do start /b ping -n 1 -w 200 192.168.0.%%N >nul timeout 1 >nul goto :top ) else ( echo Mapping network location to drive K net use k: http://%ip%:8080 /user:francis underwood /persistent:no if exist k: explorer k: :: Using FTP (please configure user and pass) :: explorer ftp://user:pass@%%f:6262 ) ) 

我已经试过这个,它的工作原理:

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

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

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

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

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

现在,如果你想找到一些IP的MAC地址试试这个:

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

请享用!

这批码将取下面,

  1. PC名称
  2. IP地址
  3. MAC地址
  4. 计算机描述(如果可用)

请将以下代码保存为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 : [MSArun][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 ********************************************************************# 

截图参考, 在这里输入图像说明

在这里输入图像说明

这可能工作

 netstat -n 

要么

 ipconfig /all 

MSArun的答案是接近最好的。 我有这个问题来检索一些虚拟机的IP地址,我所有的是MAC地址。 许多答案像MSAruns的遍布计算器和其他地方,但没有人解释他们,也没有解释正确的解决方案(恕我直言)。

我尝试了ping所有子网的技术,然后执行arp命令。 问题是我的IP范围有60k +可能的IP地址,在扫描完所有的IP地址之后(这并不是那么简单,而且用启动命令真的很难看),arp表实在是太少了……顺便说一句,甚至在尝试“开始ping”时也是如此。 我最终发现arp是一个缓存表,周期性地刷新自己,这就是为什么这个方法很少成功的原因。

解决的办法是ping所有的子网,但每次ping后都要执行一个arp命令来查看IP是否与你的MAC地址相匹配,这样可以确保你不会因为arp表的缓存性质而丢失信息。 为了使它正确,我在Java中实现了这个; isReachable()方法真的很干净,我的屏幕上没有任何cmd提示符。 而且,使用Java线程的IP扫描的60k +范围需要10秒。 我认为这比批处理脚本更安全

请参阅此处的threadedScan()方法,该方法接收一组IP地址并查找MAC地址。

希望这可以帮助;)