Jump to content
Калькуляторы

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 не уверен.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Под Windows?

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this