我正在尝试编写一个批处理文件,当它连接到网络(Tenda WiFi路由器)时,应该找到我的Android手机动态分配的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之外没有做任何事情)?
我试过这个并且它有效:
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地址替换YOUR-MAC,并保留单引号
现在,如果你想从某些IP找到MAC地址试试这个:
$ arp -n | grep -w -i 'YOUR-IP' | awk '{print $3}'
请享用!
此批代码将获取以下内容,
请以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 ********************************************************************#
M.S.Arun's答案接近最佳。我有这个问题,检索一些虚拟机的IP地址,我所拥有的只是MAC地址。许多答案,如M.S.Aruns的遍布stackoverflow和其他地方,但没有人解释他们,也没有正确解释解决方案(恕我直言)。
我尝试了ping所有子网的技术,然后执行arp命令。问题是我的IP范围有60k +可能的IP地址,并且在扫描了所有这些之后(这不是那么简单,并且使用start命令真的很难看)arp表真的很难填充......顺便说一下它耗时30秒,即使在尝试“开始ping”时也是如此。我最终发现作为缓存表的arp会定期刷新,这就是为什么这种方法很少成功的原因。
解决方案是ping所有子网,但在每次ping之后执行arp命令以查看IP是否与您的MAC地址匹配,这可以确保您不会因为arp表的缓存特性而丢失信息。为了使它正确,我用Java实现了它; isReachable()方法非常简洁,并且我的屏幕上没有任何cmd提示产生。此外,使用Java线程,60k + IP扫描范围最多需要10秒。我认为这比批处理脚本更安全...
请参阅threadedScan() method here,它接收IP数组并查找MAC地址。
希望这可以帮助;)
这可能会奏效
netstat -n
要么
ipconfig /all
我可以得到所有导致交通的东西:arp -an
成功。