Перейти к содержимому
Калькуляторы

bat-скрипт для фиксации ARP

Скрипт, который сканирует локальную подсеть и фиксирует в ARP-таблице обнаруженные записи.

Полезен в том случае, когда в сети есть несколько устройств с одинаковым IP-адресом.

В моем случае это IP-камеры — обычно они монтируются, а затем разом настраиваются (это быстрее, чем настраивать каждую камеру по месту перед монтажом).

BAT-файлы на форуме запрещены, поэтому выкладываю в спойлере.

 

 

@echo off

setlocal EnableDelayedExpansion
for /F %%a in ('"prompt $H&for %%b in (1) do rem"') do set \b=%%a

set Z=%1
set W=%2
set N=%3

if "*"=="%Z%*" (
 echo Lock ARP-records
 echo Usage: %~nx0 ^<IP^|mask^|range^>
 echo Examples:
 echo   %~nx0 192.168.1.*
 echo   %~nx0 192.168.1.1-99
 echo   %~nx0 192.168.1.100
 goto :EOF
)
if "*"=="%W%*" set W=100
if "*"=="%N%*" set N=2

for /F "usebackq tokens=1,2,3,4 delims=." %%a in ('%Z%') do (
 set NET=%%a.%%b.%%c
 set IP=%%d
)
for /F "usebackq tokens=1,2 delims=-" %%a in ('%IP%') do (
 set IP1=%%a
 set IP2=%%b
)
if "**"=="%IP%*" (
 set IP=
 set IP1=1
 set IP2=254
) else if "*"=="%IP2%*" (
 set IP=
 set IP2=%IP1%
) else (
 set IP=
)

arp -d > nul 2>&1
echo Check network [%NET%.%IP1%-%IP2%]
set MAC=*
for /L %%i in (%IP1%,1,%IP2%) do (
 set IP=%NET%.%%i
 if "*"=="!MAC!*" (
   for /L %%z in (1,1,40) do <nul set /P "=%\b%"
   for /L %%z in (1,1,40) do <nul set /P "= "
   for /L %%z in (1,1,40) do <nul set /P "=%\b%"
 )
 <nul set /P "=  - !IP!..."
 set MAC=
 for /F "usebackq tokens=1,2" %%a in (`ping -w %W% -n %N% !IP! ^| arp -a ^| find "!IP! " ^| find /V "00-00-00-00-00-00"`) do set MAC=%%b
 if "*"=="!MAC!*" (
   <nul set /P "= not found"
 ) else (
   <nul set /P "=%\b%%\b%%\b%   %\b%%\b%%\b%, locked on !MAC!"
   arp -s !IP! !MAC! > nul 2>&1
   echo.
 )
)

echo.
echo Press any key for release locks and done...
pause > nul 2>&1
arp -d > nul 2>&1

 

 

 

Первым аргументом указывается IP-адрес (например 192.168.1.1), диапазон (например 192.168.1.1-100) или подсеть (например 192.168.1.*).

Вторым и третьим аргументом можно указать время таймаута для обнаружения и количество попыток, но по умолчанию значения оптимальные.

Запускается на Windows XP и выше, за работу на Windows 2000 не уверен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для того чтоб отлавливать дублирующиеся адреса есть arping , гораздо удобнее чем просматривать апр таблицу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Под Windows?

В скрипте используются только встроенные инструменты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да под виндовс . Про решение задачи через встроенное по вы ничего не писали. Использование доп утилит сильно упрощает жизнь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.