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 :
Merci
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
Partager