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 : Sélectionner tout - Visualiser dans une fenêtre à part
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