Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1312 connectés 

  FORUM HardWare.fr
  Réseaux grand public / SoHo
  Réseaux

  possible de fixer un nom de machine par DHCP ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

possible de fixer un nom de machine par DHCP ?

n°258456
trevor
laissez la vie vous étonner...
Posté le 30-03-2007 à 15:21:12  profilanswer
 

'lut
 
Je cherche à savoir si c'est possible de fixer un nom de machine par DHCP, de la même manière que l'on fixe une adresse IP.
Sous Win 2k serveur, dans les options de DHCP, il y a "012 nom de l'hôte - nom d'hôte pour client". J'ai testé mais sans succès...
 
Sinon, comment changer le nom de machine via la BdR ? Je suppose que c'est possible, mais quelle est la clé exactement, j'ai bien entendu fait une recherche, mais plusieurs clés correspondent au nom de la machine. Avant de faire différents tests, et très certainement de mettre en vrac la machine-test de mon réseau, qqun peut-il m'aider un peu ? :)
 
Merci d'avance.
 
Ps: Réseau Win 2k advanced server sous AD avec machines Win 2k liées au domaine.


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
mood
Publicité
Posté le 30-03-2007 à 15:21:12  profilanswer
 

n°258457
bartounet1​6
go go go
Posté le 30-03-2007 à 15:22:04  profilanswer
 

sous windows je ne crois pas sous Linux oui c'est très facile...
 

n°258458
trevor
laissez la vie vous étonner...
Posté le 31-03-2007 à 22:27:02  profilanswer
 

Bon, la solution "via DHCP" semblait ne pas être possible (ou alors détrompez-moi), j'ai commencé mes investigations via une solution batch.
 
Après scan du registre, petit coup de regmon (merci sysinternals.com !!) et qqes recherches googlesques, j'ai isolé 3 clés de la BdR permettant à priori de changer le nom de la machine.
J'ai fais plusieurs tests, et ai comparé avec un changement classique (via Panneau de configuration > Système > Nom de l'ordinateur) et mon batch fait à priori exactement les mêmes modifs.
 
Dans l'optique d'automatiser tout ça, j'ai inclus un reboot :

Code :
  1. @echo off
  2. set clt-pre=CLT
  3. echo No du client :
  4. set /p clt-no=
  5. echo ::::: Modification du nom de l'ordinateur...
  6. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /d %clt-pre%%clt-no% /f > NUL
  7. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /d %clt-pre%%clt-no% /f > NUL
  8. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /d %clt-pre%%clt-no% /f > NUL
  9. echo ::::: Redémarrage de l'ordinateur...
  10. shutdown -r -t 10 -c "Redemarrage de l'ordinateur - Nouveau nom : "%clt-pre%%clt-no% -f


 
... en oubliant pas, pour win2k de récupérer reg.exe et shutdown.exe dans le toolkit 2k.
 
Bon en tout cas, cela marche pour une machine sans domaine (groupe de travail donc), je testerai dans la semaine avec une machine client sous AD.
 
L'idée étant notamment de méga-automatiser :
- récupérer l'IP (attribuée par DHCP)
- extraire le dernier octet pour en faire le "clt-no" (numéro de machine cliente)
 
Par la suite:
- vérifier que le hostname actuel est différent du hostname "pseudo"-automatisé ("CLTxxx avec xxx de son ip A.B.C.xxx)
- si oui alors faires les modifs, sinon ne rien faire
 
Et puis enfin, l'intégrer en script d'ouverture de machine ou de session.
 
Quand je serai grand et que j'aurai le courage, je tenterai de le faire en WSH, ça me donnera une raison de regarder à quoi ça ressemble.
 
A ceux qui se demandent (peut-être) à quoi cela va me servir, l'idée est simplement d'éviter de passer 4 plombes à passer sur chaque machine de mon AD pour la renommer après que j'ai passé tout mon (petit) réseau avec UDPCast.
 
Nb: Oui je sais, il y a certainement des tas de super-solutions professionnelles qui m'éviteraient d'avoir à me faire chier comme ça, mais les dites solutions sont certainement payantes, et je doute que ma "boite" (l'éduc nat) accepte de raquer des softs pour les amusements du prof qui gère la section info. ;)

Message cité 1 fois
Message édité par trevor le 31-03-2007 à 22:29:33

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
n°279392
m3z
il faut toujours faire simple
Posté le 15-05-2007 à 16:02:35  profilanswer
 

Hello,  
 
Le DHCP fixe les adresses IP.  
C'est le DNS qui fixes les nom des machines.
 
A+

n°279468
ShonGail
En phase de calmitude ...
Posté le 15-05-2007 à 20:00:36  profilanswer
 

m3z a écrit :

Hello,  
 
Le DHCP fixe les adresses IP.  
C'est le DNS qui fixes les nom des machines.
 
A+


 
 
 [:xp1700]

n°279470
ShonGail
En phase de calmitude ...
Posté le 15-05-2007 à 20:02:28  profilanswer
 

trevor a écrit :

Bon, la solution "via DHCP" semblait ne pas être possible (ou alors détrompez-moi), j'ai commencé mes investigations via une solution batch.
 
Après scan du registre, petit coup de regmon (merci sysinternals.com !!) et qqes recherches googlesques, j'ai isolé 3 clés de la BdR permettant à priori de changer le nom de la machine.
J'ai fais plusieurs tests, et ai comparé avec un changement classique (via Panneau de configuration > Système > Nom de l'ordinateur) et mon batch fait à priori exactement les mêmes modifs.
 
Dans l'optique d'automatiser tout ça, j'ai inclus un reboot :

Code :
  1. @echo off
  2. set clt-pre=CLT
  3. echo No du client :
  4. set /p clt-no=
  5. echo ::::: Modification du nom de l'ordinateur...
  6. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /d %clt-pre%%clt-no% /f > NUL
  7. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /d %clt-pre%%clt-no% /f > NUL
  8. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /d %clt-pre%%clt-no% /f > NUL
  9. echo ::::: Redémarrage de l'ordinateur...
  10. shutdown -r -t 10 -c "Redemarrage de l'ordinateur - Nouveau nom : "%clt-pre%%clt-no% -f


 
... en oubliant pas, pour win2k de récupérer reg.exe et shutdown.exe dans le toolkit 2k.
 
Bon en tout cas, cela marche pour une machine sans domaine (groupe de travail donc), je testerai dans la semaine avec une machine client sous AD.
 
L'idée étant notamment de méga-automatiser :
- récupérer l'IP (attribuée par DHCP)
- extraire le dernier octet pour en faire le "clt-no" (numéro de machine cliente)
 
Par la suite:
- vérifier que le hostname actuel est différent du hostname "pseudo"-automatisé ("CLTxxx avec xxx de son ip A.B.C.xxx)
- si oui alors faires les modifs, sinon ne rien faire
 
Et puis enfin, l'intégrer en script d'ouverture de machine ou de session.
 
Quand je serai grand et que j'aurai le courage, je tenterai de le faire en WSH, ça me donnera une raison de regarder à quoi ça ressemble.
 
A ceux qui se demandent (peut-être) à quoi cela va me servir, l'idée est simplement d'éviter de passer 4 plombes à passer sur chaque machine de mon AD pour la renommer après que j'ai passé tout mon (petit) réseau avec UDPCast.
 
Nb: Oui je sais, il y a certainement des tas de super-solutions professionnelles qui m'éviteraient d'avoir à me faire chier comme ça, mais les dites solutions sont certainement payantes, et je doute que ma "boite" (l'éduc nat) accepte de raquer des softs pour les amusements du prof qui gère la section info. ;)


 
 
Le problème dans un domaine, c'est qu'en changeant le nom de la machine, tu doives la rentrer de nouveau dans AD :/
 
Pourquoi ne pas modifier plutôt le champ "description" de la machine ?
T'as combien de postes à changer comme ça ?

n°289032
trevor
laissez la vie vous étonner...
Posté le 02-07-2007 à 11:31:23  profilanswer
 

Bonjour...
 
Je remonte ce topic, après qqes semaines, car j'ai pu résoudre mon pb.
Après diverses recherches, je suis tombé sur diverses solutions (sysprep notamment, bien trop complexe pour mes besoins, et à priori selon certains "pros" pas très optimales), et justement la solution "newsid" de sysinternals.
Mixé avec un script wsh et qqes exemples du site de jc bellamy, je vous livre ici le code, pas très complexe :

Code :
  1. Dim AdrIp
  2. Dim Network
  3. Dim Shell
  4. Dim Message
  5. Dim Computer
  6. Dim HostName
  7. HostName = "Poste"
  8. BaseName = "Domain_"
  9. Set Network = Wscript.CreateObject("WScript.Network" )
  10. Set Shell = Wscript.CreateObject("WScript.Shell" )
  11. wscript.echo "::: Traitement post-Ghost :::" & VBCRLF
  12. computer = Network.ComputerName
  13. 'Computer = "localhost"
  14. wscript.echo "(1/7) Récupération de l'adresse IP" & VBCRLF
  15. on error resume next
  16. set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _
  17.     ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE" )
  18. for each IPConfig in IPConfigSet
  19. AdrIp=IPConfig.IPAddress(0)
  20. 'wscript.echo "  " & IPConfig.Description
  21. wscript.echo "    adresse  MAC   : "  & IPConfig.MACAddress
  22. wscript.echo "    adresse  IP    : " & AdrIp
  23. 'wscript.echo "    passerelle     : "  & IPConfig.DefaultIPGateway
  24. 'wscript.echo "    masque         : "  & IPConfig.IPSubnet
  25. 'wscript.echo "    DNSHostName    : "  & IPConfig.DNSHostName
  26. 'wscript.echo "    serveur DNS    : " & IPConfig.DNSServerSearchOrder(min)
  27. next
  28. wscript.echo VBCRLF
  29. wscript.echo "(2/7) Création d'un nouveau nom à partir de l'adresse IP" & VBCRLF
  30. HostName = HostName & Right(AdrIp, Len(AdrIp) - InStrRev(AdrIp, "." ))
  31. wscript.echo "    nouveau nom d'hôte     : " & HostName
  32. wscript.echo VBCRLF
  33. wscript.echo "(3/7) Modification du nom de machine affiché dans l'écran de veille" & VBCRLF
  34. shell.Run "reg add HKCU\Software\Microsoft\Screensavers\Text3D /v DisplayString /d " & BaseName & HostName & " /f", 0
  35. wscript.echo VBCRLF
  36. wscript.echo "(4/7) Création d'un nouvel SID aléatoire" & VBCRLF
  37. wscript.echo "(5/7) Modification du SID" & VBCRLF
  38. wscript.echo "(6/7) Modification du nom de machine" & VBCRLF
  39. shell.Run "newsid /a /d 10 " & HostName, 1, true
  40. wscript.echo VBCRLF
  41. wscript.echo "(7/7) Redémarrage" & VBCRLF
  42. wscript.echo VBCRLF


En résumé : ce script récupère l'@ IP affectée par DHCP, et l'utilise pour créer un nouveau nom de machine (PosteXX). Accessoirement, je l'utilise aussi pour modifier le texte de l'écran de veille (Domain_PosteXX).
 
Le script peut être amélioré, avec notamment un test primaire global entre l'IP et le nom actuel de la machine afin de faire ou pas les modifs (tjs dans l'idée de l'intégrer à un script d'ouverture de session machine). Il faut quand même éviter de modifier le SID de la machine trop de fois (d'après sysinternals, le changement de SID laisse d'anciennes clefs dans le registre).
 
NB: Je ne suis pas sur que le script fonctionne si la machine possède plusieurs @s IP...
 
 
A lancer dans un .bat avec la commande

Code :
  1. cscript hostname.vbs


afin d'éviter l'affichage des boites de dialogue lorsqu'exécuté avec un wscript (comportement par défaut sous win, mais modifiable, voir le site de jc bellamy)
 
 
m3z : DNS fixe les noms ? :)... va falloir réviser un peu plus sérieusement
 
ShonGail : Ta remarque était très juste, car j'avais justement testé mon précédent script dans mon domaine en observant qu'effectivement ça ne marchait à cause de ce côté "intégration au AD"
Sinon j'avais finalement très peu de machines (<15) mais je trouvais sympa de me confronter au pb et d'essayer de trouver une solution pertinente plutôt que de faire le gros boeuf passif qui répète la même opération bêtement.


Message édité par trevor le 02-07-2007 à 11:33:57

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
n°315221
trevor
laissez la vie vous étonner...
Posté le 06-09-2007 à 14:14:09  profilanswer
 

Petites majs :
- La clé de l'économiseur d'écran texte3d n'est pas la même sous w2k ou wXP, paramétrable ici sous forme de mise en commentaire
- Afin d'avoir toujours le même nombre de caractère au nom de machine basé sur l'IP donc un numéro, on rajoute un '0' si le numéro est < 10, ainsi on aura '05' et pas '5'. A modifier si le parc machines fait plus de 100 machines en '00' bien entendu.
 

Code :
  1. Dim AdrIp
  2. Dim Network
  3. Dim Shell
  4. Dim Message
  5. Dim Computer
  6. Dim HostName
  7. Dim HostNameSuffix
  8. Dim ScreenSaver3DTextRegKey
  9. Dim ScreenSaver3DTextRegKeyValue
  10. HostName = "Poste"
  11. BaseName = "Domaine_"
  12. 'Windows XP
  13. 'ScreenSaver3DTextRegKey = "HKCU\Software\Microsoft\Screensavers\Text3D"
  14. 'ScreenSaver3DTextRegKeyValue = "DisplayString"
  15. 'Windows 2000
  16. ScreenSaver3DTextRegKey = "HKCU\Control Panel\Screen Saver.3DText"
  17. ScreenSaver3DTextRegKeyValue = "Texte"
  18. Set Network = Wscript.CreateObject("WScript.Network" )
  19. Set Shell = Wscript.CreateObject("WScript.Shell" )
  20. wscript.echo "::: Traitement post-Ghost :::" & VBCRLF
  21. computer = Network.ComputerName
  22. 'Computer = "localhost"
  23. wscript.echo "(1/7) Récupération de l'adresse IP" & VBCRLF
  24. on error resume next
  25. set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _
  26.     ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE" )
  27. for each IPConfig in IPConfigSet
  28. AdrIp=IPConfig.IPAddress(0)
  29. 'wscript.echo "  " & IPConfig.Description
  30. wscript.echo "    adresse  MAC   : "  & IPConfig.MACAddress
  31. wscript.echo "    adresse  IP    : " & AdrIp
  32. 'wscript.echo "    passerelle     : "  & IPConfig.DefaultIPGateway
  33. 'wscript.echo "    masque         : "  & IPConfig.IPSubnet
  34. 'wscript.echo "    DNSHostName    : "  & IPConfig.DNSHostName
  35. 'wscript.echo "    serveur DNS    : " & IPConfig.DNSServerSearchOrder(min)
  36. next
  37. wscript.echo VBCRLF
  38. wscript.echo "(2/7) Création d'un nouveau nom à partir de l'adresse IP" & VBCRLF
  39. HostNameSuffix = Right(AdrIp, Len(AdrIp) - InStrRev(AdrIp, "." ))
  40. If HostNameSuffix < 10 Then
  41. HostNameSuffix = 0 & HostNameSuffix
  42. End If
  43. HostName = HostName & HostNameSuffix
  44. wscript.echo "    nouveau nom d'hôte     : " & HostName
  45. wscript.echo VBCRLF
  46. wscript.echo "(3/7) Modification du nom de machine affiché dans l'écran de veille" & VBCRLF
  47. shell.Run "reg add """ & ScreenSaver3DTextRegKey & """ /v """ & ScreenSaver3DTextRegKeyValue & """ /d " & BaseName & HostName & " /f", 0
  48. wscript.echo "    nouveau texte d'écran de veille     : " & BaseName & HostName & VBCRLF
  49. wscript.echo VBCRLF
  50. wscript.echo "(4/7) Création d'un nouvel SID aléatoire" & VBCRLF
  51. wscript.echo "(5/7) Modification du SID" & VBCRLF
  52. wscript.echo "(6/7) Modification du nom de machine" & VBCRLF
  53. shell.Run "newsid /a /d 10 " & HostName, 1, true
  54. wscript.echo VBCRLF
  55. wscript.echo "(7/7) Redémarrage" & VBCRLF
  56. wscript.echo VBCRLF


 
@+

n°342999
trajan
Pas de déclaration !
Posté le 09-02-2008 à 18:01:07  profilanswer
 

Je deterre, pas mal ton script, exactement ce que je cherche. Je vais tester ça. ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Réseaux grand public / SoHo
  Réseaux

  possible de fixer un nom de machine par DHCP ?

 

Sujets relatifs
Théorie DHCP et Vlan :sBypasser le cache d'une IP DHCP
CPL possible?Help ! Je n'ai plus de client DHCP
heberger 2 sites internets chez soit, c'est possible avec la NAT?ftp rj 45 sans pc allumé : possible ou pas ?
Plus de sujets relatifs à : possible de fixer un nom de machine par DHCP ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR