OVH Cloud OVH Cloud

DHCP Service

2 réponses
Avatar
Vincent
Bonjour,

J'ai une 20aine de serveurs DHCP (win 2003) et la plupart ont entre 40 et 60
scopes définis. Dans chaque scope, les options sont définies avec une classe
utilisateur spécifique qui doit être changée. Comme les postes clients ne
seront pas modifiés tous en même temps, il va falloir pour chaque scope,
rajouter les mêmes options mais avec la nouvelle classe utilisateur. Je
cherche à faire un script VBS mais je n'arrive pas à trouver comment gérer
les classes. Rien trouvé sur le script center. Quelqu'un a t'il une idée ?
(j'ai fait une recherche dans le registre pour savoir quelle clé contient les
classes mais sans succés )

Merci d'avance

Vincent

2 réponses

Avatar
Gilles LAURENT
"Vincent" a écrit dans le message
de news:
| Bonjour,

Bonsoir,

| J'ai une 20aine de serveurs DHCP (win 2003) et la plupart ont entre
| 40 et 60 scopes définis. Dans chaque scope, les options sont définies
| avec une classe utilisateur spécifique qui doit être changée. Comme
| les postes clients ne seront pas modifiés tous en même temps, il va
| falloir pour chaque scope, rajouter les mêmes options mais avec la
| nouvelle classe utilisateur. Je cherche à faire un script VBS mais
| je n'arrive pas à trouver comment gérer les classes. Rien trouvé sur
| le script center. Quelqu'un a t'il une idée ? (j'ai fait une
| recherche dans le registre pour savoir quelle clé contient les
| classes mais sans succés )
|
| Merci d'avance
|
| Vincent

Je vous propose le scénario suivant :
1- création de la nouvelle classe utilisateur sur un serveur dhcp de
référence
2- exécution du script "dumpClassId.cmd" dans le but de sauvegarder la
définition de la nouvelle classe
3- exécution du script "addClassId.cmd" pour créer la nouvelle classe
sur tous les serveurs dhcp
4- exécution du script "duplicateClassId.cmd" pour dupliquer les options
de la classe originale vers la nouvelle classe sur tous les serveurs
dhcp

+++ Pré requis
1- Choisissez un serveur dhcp de référence. Toutes les opérations seront
réalisées à partir de ce serveur (connexion locale ou TSE). Vous devez
être connecté sur ce serveur avec les droits nécéssaires pour être en
mesure de configurer le serveur dhcp local et également les serveurs
dhcp distants.

2- Créez un dossier sur le serveur dhcp de référence (par exemple
C:migDHCP). Toutes les opérations seront réalisées à partir de ce
dossier de travail.

3- Créez le fichier au format texte "C:migDHCPServers.txt" contenant
les adresses IP (une adresse IP par ligne) de tous les serveurs dhcp à
configurer. La première ligne contiendra l'adresse IP du serveur dhcp de
référence.

Note : Dans la phase de test, vous pouvez spécifier uniquement deux
adresses IP. La première celle du serveur de référence et la seconde
celle d'un serveur dhcp distant.

+++ Début des opérations
1- création de la nouvelle classe utilisateur sur le serveur dhcp de
référence
Créez la nouvelle classe utilisateur sur le serveur dhcp de référence
(nom, description et identificateur) avec la mmc DHCP (dhcpmgmt.msc)

2- exécution du script "dumpClassId.cmd" dans le but de sauvegarder la
définition de la nouvelle classe
A partir d'une invite de commandes :
C:migDHCP>dumpClassId.cmd "nom_de_la_nouvelle_classe"

3- exécution du script "addClassId.cmd" pour créer la nouvelle classe
sur tous les serveurs dhcp
A partir d'une invite de commandes :
C:migDHCP>addClassId.cmd

4- exécution du script "duplicateClassId.cmd" pour dupliquer les options
de la classe originale
A partir d'une invite de commandes :
C:migDHCP>duplicateClassId.cmd "nom_de_la_classe_originale"
"nom_de_la_nouvelle_classe"

+++ Les scripts

-- Coupez ici : dumpClassId.cmd --

@echo off
setlocal
pushd %~dp0

:: lecture des arguments
set nClassId=%~1

:: lecture de la définition de la nouvelle classe utilisateur
for /f "tokens=6*" %%i in ('netsh dhcp server dump ^| find /i
"%nClassId%"') do (

:: sauvegarde de la définition de la classe utilisateur
echo. & echo [ ] dumping classid definition ... & echo.
echo %%i %%j>nClassId.txt

:: fin de traitement
goto :eof
)

popd
endlocal

-- Coupez ici : dumpClassId.cmd --

-- Coupez ici : addClassId.cmd --

@echo off
setlocal
pushd %~dp0

:: lecture de la définition de la nouvelle classe utilisateur
:: la définition est présente dans le fichier nClassId.txt
for /f "tokens=*" %%i in (nClassId.txt) do set nClassId=%%i

:: énumération des serveurs dhcp
for /f "skip=1" %%c in (servers.txt) do (

:: création de la nouvelle classe utilisateur
echo. & echo [ ] processing server [%%c] ... & echo.

netsh dhcp server %%c add class %nClassId%
)

popd
endlocal

-- Coupez ici : addClassId.cmd --

-- Coupez ici : duplicateClassId.cmd --

@echo off
setlocal
pushd %~dp0

:: lecture des arguments
set classId=%~1
set nClassId=%~2

:: lecture des noms des serveurs dhcp
for /f %%c in (servers.txt) do (

:: lecture de la configuration du serveur dhcp
echo. & echo [ ] processing server [%%c] ... & echo.

:: énumération des étendues
for /f "tokens=* skip=1" %%i in ('netsh dhcp server %%c dump ^|
find /i "%classId%"') do (

:: configuation de la nouvelle classe utilisateur pour chaque
étendue
for /f "tokens=5-9,10,*" %%j in ('echo %%i') do (
netsh dhcp server %%c scope %%j %%k %%l %%m %%n
user="%nClassId%" %%p
)
)
)

popd
endlocal

-- Coupez ici : duplicateClassId.cmd --

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Vincent
Bonjour Laurent,

Je vous remercie énormément de m'avoir "mâché le boulot" à ce point ! Je
n'en attendais pas tant !

Merci pour votre rapidité et efficacité.

Vincent BORIE



"Vincent" a écrit dans le message
de news:
| Bonjour,

Bonsoir,

| J'ai une 20aine de serveurs DHCP (win 2003) et la plupart ont entre
| 40 et 60 scopes définis. Dans chaque scope, les options sont définies
| avec une classe utilisateur spécifique qui doit être changée. Comme
| les postes clients ne seront pas modifiés tous en même temps, il va
| falloir pour chaque scope, rajouter les mêmes options mais avec la
| nouvelle classe utilisateur. Je cherche à faire un script VBS mais
| je n'arrive pas à trouver comment gérer les classes. Rien trouvé sur
| le script center. Quelqu'un a t'il une idée ? (j'ai fait une
| recherche dans le registre pour savoir quelle clé contient les
| classes mais sans succés )
|
| Merci d'avance
|
| Vincent

Je vous propose le scénario suivant :
1- création de la nouvelle classe utilisateur sur un serveur dhcp de
référence
2- exécution du script "dumpClassId.cmd" dans le but de sauvegarder la
définition de la nouvelle classe
3- exécution du script "addClassId.cmd" pour créer la nouvelle classe
sur tous les serveurs dhcp
4- exécution du script "duplicateClassId.cmd" pour dupliquer les options
de la classe originale vers la nouvelle classe sur tous les serveurs
dhcp

+++ Pré requis
1- Choisissez un serveur dhcp de référence. Toutes les opérations seront
réalisées à partir de ce serveur (connexion locale ou TSE). Vous devez
être connecté sur ce serveur avec les droits nécéssaires pour être en
mesure de configurer le serveur dhcp local et également les serveurs
dhcp distants.

2- Créez un dossier sur le serveur dhcp de référence (par exemple
C:migDHCP). Toutes les opérations seront réalisées à partir de ce
dossier de travail.

3- Créez le fichier au format texte "C:migDHCPServers.txt" contenant
les adresses IP (une adresse IP par ligne) de tous les serveurs dhcp à
configurer. La première ligne contiendra l'adresse IP du serveur dhcp de
référence.

Note : Dans la phase de test, vous pouvez spécifier uniquement deux
adresses IP. La première celle du serveur de référence et la seconde
celle d'un serveur dhcp distant.

+++ Début des opérations
1- création de la nouvelle classe utilisateur sur le serveur dhcp de
référence
Créez la nouvelle classe utilisateur sur le serveur dhcp de référence
(nom, description et identificateur) avec la mmc DHCP (dhcpmgmt.msc)

2- exécution du script "dumpClassId.cmd" dans le but de sauvegarder la
définition de la nouvelle classe
A partir d'une invite de commandes :
C:migDHCP>dumpClassId.cmd "nom_de_la_nouvelle_classe"

3- exécution du script "addClassId.cmd" pour créer la nouvelle classe
sur tous les serveurs dhcp
A partir d'une invite de commandes :
C:migDHCP>addClassId.cmd

4- exécution du script "duplicateClassId.cmd" pour dupliquer les options
de la classe originale
A partir d'une invite de commandes :
C:migDHCP>duplicateClassId.cmd "nom_de_la_classe_originale"
"nom_de_la_nouvelle_classe"

+++ Les scripts

-- Coupez ici : dumpClassId.cmd --

@echo off
setlocal
pushd %~dp0

:: lecture des arguments
set nClassId=%~1

:: lecture de la définition de la nouvelle classe utilisateur
for /f "tokens=6*" %%i in ('netsh dhcp server dump ^| find /i
"%nClassId%"') do (

:: sauvegarde de la définition de la classe utilisateur
echo. & echo [ ] dumping classid definition ... & echo.
echo %%i %%j>nClassId.txt

:: fin de traitement
goto :eof
)

popd
endlocal

-- Coupez ici : dumpClassId.cmd --

-- Coupez ici : addClassId.cmd --

@echo off
setlocal
pushd %~dp0

:: lecture de la définition de la nouvelle classe utilisateur
:: la définition est présente dans le fichier nClassId.txt
for /f "tokens=*" %%i in (nClassId.txt) do set nClassId=%%i

:: énumération des serveurs dhcp
for /f "skip=1" %%c in (servers.txt) do (

:: création de la nouvelle classe utilisateur
echo. & echo [ ] processing server [%%c] ... & echo.

netsh dhcp server %%c add class %nClassId%
)

popd
endlocal

-- Coupez ici : addClassId.cmd --

-- Coupez ici : duplicateClassId.cmd --

@echo off
setlocal
pushd %~dp0

:: lecture des arguments
set classId=%~1
set nClassId=%~2

:: lecture des noms des serveurs dhcp
for /f %%c in (servers.txt) do (

:: lecture de la configuration du serveur dhcp
echo. & echo [ ] processing server [%%c] ... & echo.

:: énumération des étendues
for /f "tokens=* skip=1" %%i in ('netsh dhcp server %%c dump ^|
find /i "%classId%"') do (

:: configuation de la nouvelle classe utilisateur pour chaque
étendue
for /f "tokens=5-9,10,*" %%j in ('echo %%i') do (
netsh dhcp server %%c scope %%j %%k %%l %%m %%n
user="%nClassId%" %%p
)
)
)

popd
endlocal

-- Coupez ici : duplicateClassId.cmd --

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD