Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

paramètres DHCP

2 réponses
Avatar
moi
bonjour,

Je suis en train de faire des scripts pour automatiser le paramétrage
du DHCP
de certains serveurs 2003 et deux questions bêtes me viennent :

1. le paramètre 003 ("Routeur") correspond-il , comme je le crois
à ce que l'on nomme habituellement "passerelle" ?

2. Comment puis savoir, avec un script
a. Si une étendue dhcp est définie et active
b. sa taille ( elle suffisante ...)
c. sa "base" pour y ajouter quelques paramètres avec

netsh dhcp server scope xxx.xxx.xxx.xxx set optionvalue
XXX #Type# #Valeur#

(sur les param 003, 006, 066 et 067)

le script sera lancé sur le serveur..

pour le moment je n'ai que du bat mais pour vérifier l'existence de
l'étendue et son adresse
je me doute qu'il va falloir passer à qqchose de moins rustique ...

Merci d'avance,

HB

2 réponses

Avatar
Thierry DEMAN [MVP]
Bonjour,

oui, le paramètre 003 correspond à l'adresse de la passerelle TCPIP.

Pour configurer au mieux, utiliser la librairie "dhcpobjs.dll" fournie dans
le kit de ressources.
Des exemples de scripts (VBS) sont fournis !

En voici un exemple que j'ai réalisé pour gérer une plage avec uniquement
des exclusions et des réservations :

-------------------------------------------------------------------------------
' Thierry DEMAN ()
'on error resume next
' Version 1.2 Ajout des options sur l'étendue

' ************** Initialisation des objets *****
Dim objFS, WshShell,WshNetwork, dhcpmgr,dhcpsrvr,dhcpscopes,scope

SET wshshell = createObject ("Wscript.shell")
SET wshnetwork = createObject ("Wscript.Network")
SET objFS= CreateObject ("Scripting.FileSystemObject")
' server = Wshshell.ExpandEnvironmentStrings("%COMPUTERNAME%")

' *************** initialisation des variables *****

DIM Nb, I, res(), ip(), mac(), Excl(),Excl2(),info(),macX,ipX,alpha

' Récupération de l'adresse IP locale et du réseau
iploc=getipaddress
xpos=instr(IpLoc,".")
xpos=instr(xpos+1,IpLoc,".")
ipnet=mid(iploc,1,xpos-1)
'wscript.echo ipnet

' ************* Accès à l'objet DHCP *************
Set dhcpmgr = CreateObject("Dhcp.Manager")
on error resume next
Set dhcpsrvr = dhcpmgr.Servers.Connect(IpNet+".1.1")
IF err.number<>0 Then
MsgBox("Serveur DHCP introuvé")
err.clear
wscript.quit
End If
on error GOTO 0

alpha="0123456789abcdef"

Set dhcpscopes = dhcpsrvr.Scopes

SearchScope

If Scope="" Then
CreateScope IpNet
End If

'wscript.echo "*** "&scope.Name&"***"

'**************** Réservations ******************
NB=Scope.Reservations.Count
redim preserve res(NB),mac(NB),ip(NB),info(NB)

'wscript.echo "*** Reservations ***"
For i = 1 To NB
res(i)= Scope.Reservations.Item(i).name
mac(i)= Scope.Reservations.Item(i).UniqueID
ip(i)= Cstr(Scope.Reservations.Item(i).Address)
info(i)= Scope.Reservations.Item(i).Comment
' wscript.echo mac(i),ip(i)
Next

'**************** Exclusions *******************
NBX=Scope.Exclusions.Count
redim preserve Excl(NBX),Excl2(NBX)

'wscript.echo "*** Exclusions ***"
For i = 1 To NBX
excl(i)= Scope.Exclusions.Item(i).startAddress
excl2(i)= Scope.Exclusions.Item(i).EndAddress
' wscript.echo Excl(i),Excl2(i)
Next
'wscript.quit

'*****PROGRAMME PRINCIPAL******
Message="Réservations="+Cstr(NB)+" Exclusions="+Cstr(NBX)+CHR(13)+CHR(13)
Message=Message+"1: Ajouter une adresse réseau"+CHR(13)+CHR(13)
Message=Message+"2: Retirer une adresse réseau"+CHR(13)+CHR(13)
Message=Message+"(Q) pour quitter"+CHR(13)+CHR(13)

NBM=2
X=""
Do
X=trim(INPUTBOX(Message,"Gestion des réservations (ou Q pour quitter)"))
If Ucase(X)="Q" OR Len(X)=0 Then X=NBM+1
Loop Until X>="1" AND X<=CSTR(NBM)

select case X
' ******************** Ajout ********************
case "1"

' vérifier 12 chiffres hexa
DO
macX=Cstr(inputbox("saisir l'adresse mac"))
IF macX="" THEN
wscript.quit
END if
Loop Until testNum(macX) = True AND LEN(macX) = 12

' vérifier la présence éventuelle de la mac
For i = 1 to NB
' wscript.echo len(mac(i)),len(macX),Ip(i),macx,mac(i)
If left(mac(i),12) = ucase(trim(macX)) Then
msgbox "Adresse Mac déjà connue"
wscript.quit
End if
Next

' rechercher la 1ère exclusion disponible à partir de 50
If NBX>0 Then
IpX=Excl(1)
DelExcl(IpX)
AddRes MacX,IpX
End if

case "2"
'******************* Suppression ***********
' vérifier 12 chiffres hexa
DO
macX=Cstr(inputbox("saisir l'adresse mac"))
IF macX="" THEN
wscript.quit
END if
Loop Until testNum(macX) = True AND LEN(macX) = 12

' rechercher la mac
For i = 1 to NB
' wscript.echo len(mac(i)),len(macX),Ip(i),macx,mac(i)
If left(mac(i),12) = ucase(trim(macX)) Then
' wscript.echo "Trouvé"
Ipx=Ip(i)
DelRes(IpX)
AddExcl(IpX)
Exit For
End if
Next
end select

'IF Len(Scope)>0 Then
' AddRes
' AddExcl
'End If

dhcpsrvr.Disconnect

' ***************** Fin du programme principal ******************


' ******* Ajout d'une réservation *****
Function AddRes(Mac,Ip)
Dim newRes
set newres=scope.Reservations.createnew
newRes.Name = mac
newRes.UniqueID = Mac
newRes.Address = Ip
' newRes.Comment = "userinfo2"
newRes.Update
End Function

' ******* Ajout d'une Exclusion *****
Function AddExcl(Addip)
Dim newExcl
set newExcl=scope.Exclusions.createnew
newExcl.StartAddress = AddIp
newExcl.EndAddress = AddIp
newExcl.Update
End Function

' ***** Suppression d'une réservation *****
Function DelRes(DelIp)
Dim Excl
For i = 1 TO NB
' wscript.echo len(scope.Reservations.item(i).address),len(delIp)
'l=len(scope.Reservations.item(i).address)
if scope.Reservations.item(i).addressÞlIp Then
' wscript.echo DelIp+" Trouvé"
scope.Reservations.item(i).delete
exit for
End if
next
End Function

' ***** Suppression d'une Exclusion *****
Function DelExcl(DelIp)
Dim Excl
For i = 1 TO NBX
' wscript.echo scope.Exclusions.item(i).startaddress
if scope.Exclusions.item(i).startaddressÞlIp Then
scope.Exclusions.item(i).delete
exit for
End if
next
End Function

' ***** Créer l'étendue initiale *****
Function CreateScope(net)
net2=net+".1"
dhcpsrvr.Scopes.Add net2+".50", net2+".149",
"255.255.255.0","ScopeReserve", "Zone réservée", True
dhcpsrvr.Scopes.refresh
SearchScope
For i=0 TO 99
AddExcl(net2+"."+CStr(50+i))
' Wscript.echo net2+"."+CStr(50+i)
next
'on error resume next
' Ajouts des options
Scope.Options.Add 3, ARRAY(net+".1.254")
Scope.Options.Add 6, ARRAY(net+".1.1",net+".1.2")
Scope.Options.Add 44, ARRAY(net+".1.1")
Scope.Options.Add 46, cbyte(8)
Scope.Options.Add 15, Wshshell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")
Scope.Options.Add 51, 691200
End Function

' ***** Rechercher l'étendue *****
Function SearchScope

on error resume next
For i = 1 To dhcpscopes.Count
IF err.number<>0 Then
MsgBox("Serveur DHCP: permission refusée")
err.clear
wscript.quit
End If

Scope=""
If dhcpscopes.Item(i).Name = "ScopeReserve" Then
set Scope=dhcpscopes.Item(i)
Exit for
End If
Next
on error GOTO 0
End Function


' ***** Tester la valeur Hexa saisie *****
function testNum(S)
hexa=true
FOR I= 1 TO LEN(S)
lettre=MID(S,I,1)
IF Instr(alpha,LCASE(lettre))=0 THEN
hexaúlse
msgbox "caractère "&lettre&" impossible dans une adresse MAC"
testnum = hexa
exit function
END IF
NEXT
testnum = hexa
End function

' ***** Récupérer l'adresse IP locale *****
Function GetIPAddress

set IPConfigSet =
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select IPAddress from Win32_NetworkAdapterConfiguration where
IPEnabled=TRUE")

for each IPConfig in IPConfigSet
if Not IsNull(IPConfig.IPAddress) then
for i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
GetIpAddress=IPConfig.IPAddress(i)
next
end if
next
End Function



--
Thierry DEMAN-BARCELÒ
MVP Exchange, SQL/Server
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org
"moi" a écrit dans le message de
news:em%
bonjour,

Je suis en train de faire des scripts pour automatiser le paramétrage du
DHCP
de certains serveurs 2003 et deux questions bêtes me viennent :

1. le paramètre 003 ("Routeur") correspond-il , comme je le crois
à ce que l'on nomme habituellement "passerelle" ?

2. Comment puis savoir, avec un script
a. Si une étendue dhcp est définie et active
b. sa taille ( elle suffisante ...)
c. sa "base" pour y ajouter quelques paramètres avec

netsh dhcp server scope xxx.xxx.xxx.xxx set optionvalue XXX
#Type# #Valeur#

(sur les param 003, 006, 066 et 067)

le script sera lancé sur le serveur..

pour le moment je n'ai que du bat mais pour vérifier l'existence de
l'étendue et son adresse
je me doute qu'il va falloir passer à qqchose de moins rustique ...

Merci d'avance,

HB


Avatar
moi
Notre ami Thierry DEMAN [MVP] tapota :

Bonjour,

oui, le paramètre 003 correspond à l'adresse de la passerelle TCPIP.

Pour configurer au mieux, utiliser la librairie "dhcpobjs.dll"
fournie dans le kit de ressources.
Des exemples de scripts (VBS) sont fournis !

En voici un exemple que j'ai réalisé pour gérer une plage avec
uniquement des exclusions et des réservations :

(...)


Bonjour,

Merci beaucoup

cet exemple est largement assez riche pour que je puisse faire ce que
je désire

A+

HB