сначало пингуешь ip адреса машин у которых хочешь получить маки, а потом посылаешь запрос arp -a, но это работает в пределах одной виртуальной сети (VLAN)
@echo off
if exist arp_table.txt (
if exist arp_table.bak del arp_table.bak
ren arp_table.txt arp_table.bak
)
for /L %%i in (1,1,254) do (
echo 10.3.0.%%i
ping -n 1 10.3.0.%%i>nul
arp -a 10.3.0.%%i>arp_string.tmp
for /F "skip=3 tokens=*" %%j in (arp_string.tmp) do (
echo %%j|find /V "invalid">>arp_table.txt
)
)
del arp_string.tmp
Грубо говоря, пингует группу IP и выводит результат команды arp в файл arp_table.txt
Файл сделан для IP подсети 10.3.0.0/255.255.255.0, но это легко изменить
Дешево и сердито Естесно, обнаруживает только живых и только которые на пинг отзываются
Добавление от 05.07.2005 14:31:
Файл для w2k - не ниже, конечно. Для надежности (не всегда хосты на первый же пинг отзываются) вместо ping -n 1 имеет смысл поставить ping -n 2. Но это замедляет. Ну и - работает только в пределах своей подсети IP (в которой находится пингующий всех хост)."
Проверял - работает.
Есть такая программа GFI Languard
она может собирать информацию по сети. Включая mac адреса, можно скрипт настроить чтобы только mac выяснял
Мне нравится 3.1 но найти сейсчас сложно.
Сейчас 7 версия. www.gfi.com