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

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.