Ответ 1
Я пробовал это, и он работает:
for /L %N in (1,1,254) do start /b ping -n 1 -w 200 192.168.0.%N
при условии, что в телефоне включен ICMP, у вас не должно быть проблем.
Я пытаюсь написать командный файл, который должен найти динамически назначенный IP-адрес моего телефона Android, когда он подключен к сети (маршрутизатор Tenda WiFi).
Поэтому я пробую 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, у вас не должно быть проблем.
Если вы хотите найти IP из MAC, сделайте это
$ arp -n | grep -w -i 'YOUR-MAC' | awk '{print $1}'
Обратите внимание, что вы должны заменить ВАШЕ-MAC , с вашим MAC-адресом, сохранить одинарные кавычки
Теперь, если вы хотите найти MAC-адрес от некоторого IP-адреса Попробуйте следующее:
$ 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 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 / Computer Description)
echo. > %cd%\PC_Details_Temp.txt
echo Remote PC Details Fetching Script (PC Name / IP / Computer Description) details of the Nearby PC 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 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 ********************************************************************#
Ответ М.С.Аруна близок к лучшему. У меня была эта проблема для получения IP-адреса виртуальных машин, для которого все, что у меня было, было MAC-адресом. Множество ответов, таких как M.S.Aruns, во всем стековом потоке и в других местах, но никто их не объясняет и не объясняет корректное решение (IMHO).
Я попробовал метод pinging всей подсети, а затем выполнил команду arp. Проблема заключалась в том, что у моего IP-диапазона был 60k + возможный IP-адрес, и после сканирования всех из них (что было не так просто и действительно уродливо с помощью команды start) таблица arp была очень плохо заполнена... Кстати, это было как 30 секунд, даже при попытке "начать ping". В конце концов я понял, что arp, являющийся таблицей кэша, периодически сбрасывается, поэтому этот метод редко преуспел.
Решение заключается в ping всей подсети, но после каждого ping выполнить команду arp, чтобы узнать, соответствует ли IP вашему MAC-адресу, что гарантирует, что вы не потеряете информацию из-за характера кэша таблиц arp. Чтобы сделать это правильно, я реализовал это на Java; метод isReachable() действительно чист, и на моем экране не появляются всплывающие подсказки cmd. Кроме того, диапазон сканирования IP-адресов 60k + занимает до 10 секунд с использованием потоков Java. Я думаю, что это более безопасный способ, чем пакетный скриптинг...
См. метод threadedScan() здесь, который принимает в себе массив IP-адресов и ищет MAC-адрес.
Надеюсь, это может помочь;)
это может работать
netstat -n
или
ipconfig /all
Я мог бы получить все, что вызывает трафик, с помощью: arp -an
успешно.