DHCP - Trouver une adresse IP libre et la réserver
Bonjour,
J'essaye d'écrire un script batch permettant de :
- trouver et supprimer un ancien bail DHCP pour une adresse MAC donnée,
- trouver et réserver une nouvelle adresse IP dans une étendue donnée.
Le début du script est fonctionnel. Bien que le code puisse sans doute être optimisé.
En revanche, je ne sais pas comment écrire ceci : par exemple, balayer chacune des adresses IP de 192.168.1.2 à 19.168.3.254.
Voici le code actuel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| @echo off
cls
setlocal enabledelayedexpansion
rem Demande de saisir une adresse MAC
set /p mac="Adresse MAC [00-aa-11-bb-22-cc] : "
set /p scope="Adresse etendue [10.10.10.0] : "
echo Recherche d'une IP dans le serveur DHCP...
rem Liste l'ensemble des etendues DHCP
for /f "tokens=1" %%i in ('netsh dhcp server 20.20.20.20 show scope ^| findstr 10.10.*.*') do (
rem Recheche dans chaque etendue l'adresse MAC saisie
for /f "tokens=1" %%j in ('netsh dhcp server 20.20.20.20 scope %%i show clients ^| findstr %mac%') do (
rem Supprime l'ancien bail
netsh dhcp server 20.20.20.20 scope %%i delete lease %%j
rem Affiche l'adresse IP trouvee
for /f "tokens=1 delims=-" %%k in ('netsh dhcp server 20.20.20.20 show scope ^| findstr %%i') do set rzo=%%k
set rzo=!rzo: =!
for /f "tokens=4 delims=-" %%l in ('netsh dhcp server 20.20.20.20 show scope ^| findstr %%i') do set name=%%l
echo IP supprimee : [!rzo! - !name!] %%j
)
)
rem Determine la première adresse IP de l'etendue
for /f "tokens=1 delims=-" %%m in ('netsh dhcp server 20.20.20.20 scope %scope% show iprange') do set debut=%%m
set debut=!debut: =!
rem Determine la dernière adresse IP de l'etendue
for /f "tokens=2 delims=-" %%n in ('netsh dhcp server 20.20.20.20 scope %scope% show iprange') do set fin=%%n
set fin=!fin: =!
rem Balaye l'ensemble des IP de l'etendue
//
//
rem Verifie si l'adresse IP est deja utilisee
for /f "delims=" %%o in ('netsh dhcp server 20.20.20.20 scope %scope% show clients ^| findstr %ip%') do (
if %%o EQU "" set ip=%%o
rem Reserve l'adresse IP disponible
netsh dhcp server 20.20.20.20 scope %scope% add reservedip %ip% %mac%
rem Affiche l'adresse IP reservee
echo IP reservee : %ip%
pause
goto :eof
)
//
//
pause |
Merci :)