Se connecter avec
S'enregistrer | Connectez-vous

Batch adressage ip en réseau

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

Meilleure solution

Effectivement le batch ne fonctionne que sur un Windows XP en français (les test effectués sous Vista montre que cela fonctionne ; et oui en français aussi :p  ). Désolé, je ne suis pas dans une multi nationale qui utilise des versions anglaises, chinoise, russe... et en anglais cela devrait être Physical address

Oui cela echoue si on rajoute une carte réseau, notamment si des logiciels de machines virtuelles sont présentes sur la machine, mais dans la plupart des cas de déploiement de masse, une seule carte réseau est présente sur la machine.
Si plusieurs cartes réseau sont présentes, avec la commande ipconfig /all | find "Adresse physique" > mac.txt toutes les adresses mac sont présentes dans le fichier texte (il faut tester de temps en temps).

Pour la modification des 3 informations dans la base de registre c'est une méthode, il existe des logiciels permettant d'effectuer cette tâches mais non automatique. Pour reprendre la citation oui le controlset001 est la bonne clé de registre, les autres controlset permettent de sauvegarder pour permettre d'effectuer la dernière bonne configuration connue (je ne décrit pas la procédure trop long). :sleep:  et Microsoft modifie bien la base de registre lors du renommage de la machine.

Voici comme promis le code, celui ci fonctionne pour 15 machines.
Lire jusqu'au bout une recette est présente :lol:  :pt1cable: 
ce code reste à modifier selon les besoins

  1. @echo off
  2. cls
  3. echo Param‚trage du nom de la machine et de l'adresse IP
  4. ipconfig /all | find "Adresse physique" > c:\salle31.txt
  5. fc c:\salle31.txt c:\applications\macadd\ST3115.txt > nul
  6. if %errorlevel% == 1 goto poste14
  7. if %errorlevel% == 0 goto ST3115
  8.  
  9. :ST3115
  10. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3115 /f
  11. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3115 /f
  12. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3115 /f
  13. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.115 255.255.255.0 10.10.11.100 gwmetric=1
  14. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  15. goto FIN
  16.  
  17. :poste14
  18. fc c:\salle31.txt c:\applications\macadd\ST3114.txt > nul
  19. if %errorlevel% == 1 goto poste13
  20. if %errorlevel% == 0 goto ST3114
  21.  
  22. :ST3114
  23. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3114 /f
  24. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3114 /f
  25. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3114 /f
  26. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.114 255.255.255.0 10.10.11.100 gwmetric=1
  27. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  28. goto FIN
  29.  
  30. :poste13
  31. fc c:\salle31.txt c:\applications\macadd\ST3113.txt > nul
  32. if %errorlevel% == 1 goto poste12
  33. if %errorlevel% == 0 goto ST3113
  34.  
  35. :ST3113
  36. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3113 /f
  37. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3113 /f
  38. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3113 /f
  39. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.113 255.255.255.0 10.10.11.100 gwmetric=1
  40. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  41. goto FIN
  42.  
  43. :poste12
  44. fc c:\salle31.txt c:\applications\macadd\ST3112.txt > nul
  45. if %errorlevel% == 1 goto poste11
  46. if %errorlevel% == 0 goto ST3112
  47.  
  48. :ST3112
  49. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3112 /f
  50. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3112 /f
  51. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3112 /f
  52. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.112 255.255.255.0 10.10.11.100 gwmetric=1
  53. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  54. goto FIN
  55.  
  56. :poste11
  57. fc c:\salle31.txt c:\applications\macadd\ST3111.txt > nul
  58. if %errorlevel% == 1 goto poste10
  59. if %errorlevel% == 0 goto ST3111
  60.  
  61. :ST3111
  62. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3111 /f
  63. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3111 /f
  64. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3111 /f
  65. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.111 255.255.255.0 10.10.11.100 gwmetric=1
  66. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  67. goto FIN
  68.  
  69. :poste10
  70. fc c:\salle31.txt c:\applications\macadd\ST3110.txt > nul
  71. if %errorlevel% == 1 goto poste9
  72. if %errorlevel% == 0 goto ST3110
  73.  
  74. :ST3110
  75. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3110 /f
  76. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3110 /f
  77. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3110 /f
  78. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.110 255.255.255.0 10.10.11.100 gwmetric=1
  79. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  80. goto FIN
  81.  
  82. :poste9
  83. fc c:\salle31.txt c:\applications\macadd\ST3109.txt > nul
  84. if %errorlevel% == 1 goto poste8
  85. if %errorlevel% == 0 goto ST3109
  86.  
  87. :ST3109
  88. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3109 /f
  89. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3109 /f
  90. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3109 /f
  91. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.109 255.255.255.0 10.10.11.100 gwmetric=1
  92. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  93. goto FIN
  94.  
  95. :poste8
  96. fc c:\salle31.txt c:\applications\macadd\ST3108.txt > nul
  97. if %errorlevel% == 1 goto poste7
  98. if %errorlevel% == 0 goto ST3108
  99.  
  100. :OK
  101. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3108 /f
  102. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3108 /f
  103. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3108 /f
  104. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.108 255.255.255.0 10.10.11.100 gwmetric=1
  105. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  106. goto FIN
  107.  
  108. :poste7
  109. fc c:\salle31.txt c:\applications\macadd\ST3107.txt > nul
  110. if %errorlevel% == 1 goto poste6
  111. if %errorlevel% == 0 goto ST3107
  112.  
  113. :ST3107
  114. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3107 /f
  115. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3107 /f
  116. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3107 /f
  117. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.107 255.255.255.0 10.10.11.100 gwmetric=1
  118. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  119. goto FIN
  120.  
  121. :poste6
  122. fc c:\salle31.txt c:\applications\macadd\ST3106.txt > nul
  123. if %errorlevel% == 1 goto poste5
  124. if %errorlevel% == 0 goto ST3106
  125.  
  126. :ST3106
  127. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3106 /f
  128. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3106 /f
  129. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3106 /f
  130. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.106 255.255.255.0 10.10.11.100 gwmetric=1
  131. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  132. goto FIN
  133.  
  134. :poste5
  135. fc c:\salle31.txt c:\applications\macadd\ST3105.txt > nul
  136. if %errorlevel% == 1 goto poste4
  137. if %errorlevel% == 0 goto ST3105
  138.  
  139. :ST3105
  140. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3105 /f
  141. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3105 /f
  142. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3105 /f
  143. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.105 255.255.255.0 10.10.11.100 gwmetric=1
  144. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  145. goto FIN
  146.  
  147. :poste4
  148. fc c:\salle31.txt c:\applications\macadd\ST3104.txt > nul
  149. if %errorlevel% == 1 goto poste3
  150. if %errorlevel% == 0 goto ST3104
  151.  
  152. :ST3104
  153. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3104 /f
  154. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3104 /f
  155. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3104 /f
  156. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.104 255.255.255.0 10.10.11.100 gwmetric=1
  157. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  158. goto FIN
  159.  
  160. :poste3
  161. fc c:\salle31.txt c:\applications\macadd\ST3103.txt > nul
  162. if %errorlevel% == 1 goto poste2
  163. if %errorlevel% == 0 goto ST3103
  164.  
  165. :ST3103
  166. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3103 /f
  167. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3103 /f
  168. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3103 /f
  169. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.103 255.255.255.0 10.10.11.100 gwmetric=1
  170. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  171. goto FIN
  172.  
  173. :poste2
  174. fc c:\salle31.txt c:\applications\macadd\ST3102.txt > nul
  175. if %errorlevel% == 1 goto poste1
  176. if %errorlevel% == 0 goto ST3102
  177.  
  178. :ST3102
  179. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3102 /f
  180. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3102 /f
  181. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3102 /f
  182. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.102 255.255.255.0 10.10.11.100 gwmetric=1
  183. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  184. goto FIN
  185.  
  186. :poste1
  187. fc c:\salle31.txt c:\applications\macadd\ST3101.txt > nul
  188. if %errorlevel% == 1 goto fin
  189. if %errorlevel% == 0 goto ST3101
  190.  
  191. :ST3101
  192. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d ST3101 /f
  193. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d ST3101 /f
  194. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d ST3101 /f
  195. netsh interface ip set address "Connexion au r‚seau local" static 10.10.11.101 255.255.255.0 10.10.11.100 gwmetric=1
  196. netsh interface ip set dns "Connexion au r‚seau local" static 10.10.11.100
  197. GOTO FIN
  198.  
  199. :FIN



La recette : vive le DOS !!!
Expert Programmation

Bonjour,

Comme nous ne sommes pas une SSII, nous ne réalisons pas de travaux à la demande. Nous sommes les membres d'une forum où nous entraidons entre développeurs (débutants/novices acceptés).

Si tu as un bout de programme à nous jeter en pâture (lis bien le règlement avant de publier ton code), on pourra commencer à en discuter.

zeb a dit :
Ah, BennyHeal suppose que tu es sous Windows. Alors l'étude de la fonction netsh s'impose.

Sinon, sous Linux, c'est la commande ifconfig qu'il faudra étudier.



je suis effectivement obligé de l'utiliser sous windows.je vais faire un tour sur les liens pour voir si je peux trouver quelque chose d'interressant

explicit59222 a dit :
c'est un travail pour ma formation je cherche des idées pour réaliser ce batch qui me semble très dur le problème c'est que je ne trouve rien qui puisse m'indiquer les bonnes lignes de commande a insérer



Bonjour,

Le batch n'est pas très dur à la base, le principal est d'écouter les cours qui sont donnés lors de la formation !!!!!!
Toutes les commandes ont été vues et commentées pendant près de trois heures (et oui trois heures d'écoute c'est long).

Pour les autres membres du forum qui souhaite avoir la réponse je me fait plaisir en vous donnant les quelques explications.
Etant le formateur de explicit59222 je reformule la demande :
J'ai demandé de renommer 10 machines à chaud ainsi que d'attribuer une adresse ip fixe, suivant l'adresse mac de la machine.

Résultat :
il faut avoir pour cela un fichier texte avec l'adresse mac de la machine stocké soit sur un réseau, soit sur la machine. Exemple pour une machine ipconfig /all | find "Adresse physique" > xxxx.txt Ceci permet de recuperer la ligne de la mac adresse de la machine (à faire sur les dix machines).

en batch les comparer en faisant un fc fichier1 fichier2 > nul ceci renvoi 0 ou 1
avec errorlevel tester le résultat.

pour renommer une machine à chaud (fonctionne sous xp et vista)

reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d XXXXXXX /f
reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d XXXXXXXX /f
reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d XXXXXXXX /f


remplacer les XXXXXXX par le nom de la machine qui doit être renommé.


Pour l'adresse ip

netsh interface ip set address "Connexion au r‚seau local" static <ip> <masque de sous réseau> <passerelle> gwmetric=1

remplacer ce qui est entre < > par les données correspondantes. Donc ici la carte réseau a une ip fixe.


Configuration du dns en static :
netsh interface ip set dns "Connexion au r‚seau local" static <dns>

Et voila plus qu'a incorporer toute ces lignes dans un batch complet permettant de renommer les machines.

Je fournirais un exemple complet du batch lorsque le groupe auras rendu l'exercice demander.

Bon courage à tous.

Expert Programmation

Ton batch ne marche que pour des Windows en Français, et il échoue complètement si on rajoute une carte réseau.

De plus, modifier HKLM\SYSTEM\ControlSet001 n'est pas une bonne idée :
Citation :
If you need to modify system settings in the Registry, CurrentControlSet is the best subkey to choose because you know that it is the correct control set.

Expert Programmation

chrisleform a dit :
Pour la modification des 3 informations dans la base de registre c'est une méthode, il existe des logiciels permettant d'effectuer cette tâches mais non automatique. Pour reprendre la citation oui le controlset001 est la bonne clé de registre, les autres controlset permettent de sauvegarder pour permettre d'effectuer la dernière bonne configuration connue (je ne décrit pas la procédure trop long). :sleep:  et Microsoft modifie bien la base de registre lors du renommage de la machine.

Le lien que j'ai montré indique spécifiquement que ça n'est pas forcement le cas, et que les applications devrai utiliser CurrentControlSet. Non seulement ça permet au mécanisme de sauvegarde de la dernière bonne configuration de fonctionner, mais ça marche partout, puisque le controlset par défault est spécifié dans une autre clef de registre (et il n'est pas forcement 001).
Expert Programmation

Mais quelle horreur ce code !
Si c'est pour une étude et qu'une note doit être donnée, ça vaut 10/20 !
Ben oui, ça fait le boulot, donc la moyenne, mais c'est tellement mal fait.

La remarque de Batchy reste pertinente. Utilise CurrentControlSet.
Mais surtout, fais-moi le plaisir d'utiliser une boucle :
  1. FOR /L %%I IN (1,1,15) DO (
  2. ...
  3. )

La commande pour lister les adresses mac, c'est getmac.
Expert Programmation

zeb a dit :
Mais quelle horreur ce code !
Si c'est pour une étude et qu'une note doit être donnée, ça vaut 10/20 !
Ben oui, ça fait le boulot, donc la moyenne, mais c'est tellement mal fait.
Ah mon dieu, j'avais même pas lu.

Pourquoi un for sur des nombres, alors que for est si bon pour lister des fichiers ?
  1. for %%i in ("c:\applications\macadd\ST*.txt") do ....

Avec en prime un call %%i.bat pour avoir une conf séparée ...
Lassé par la pub ? Créez un compte