[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 ; Script de mise au domaine manuelle 2 ; $Id: rejointSE3.au3 6727 2012-01-01 17:58:39Z olikin $ 3 ; Stephane Boireau, d'après le script rejointSE3.cmd de Denis Bonnenfant 4 ; N'est normalement lancé qu'en cas d'adhésion 'un nouveau poste 5 ; ou que la mise au domaine depuis l'interface SE3 a échoué. 6 ; Olivier Lacroix : ce script ne contient plus que les accès réseaux à \\se3\netlogon notamment. 7 ; les autres commandes à passer en environnement privilégié sont dans rejointSE3-elevated.exe appelé en fin de ce script. 8 ; Derniere modification: 17/12/2011 9 10 ;Include constants 11 #include <GUIConstants.au3> 12 13 #include <se3_crob.lib.au3> 14 15 ; Recuperation des parametres dans le même dossier 16 $SE3_IP=IniRead(@ScriptDir & "\se3ip.ini", "ParamSE3", "se3ip", "") 17 $SE3_NETBIOS_NAME=IniRead(@ScriptDir & "\se3ip.ini", "ParamSE3", "netbios_name", "") 18 $DOMAINE=IniRead(@ScriptDir & "\se3ip.ini", "ParamSE3", "se3_domain", "") 19 ;MsgBox(0,"Info","DOMAINE=" & $DOMAINE) 20 ;Exit 21 22 If $SE3_IP = "" Then 23 MsgBox(0,"ERREUR", "La variable $SE3_IP est vide." & @CRLF & "Le fichier " & @ScriptDir & "\se3ip.ini est-il renseigné?") 24 Exit 25 EndIf 26 27 If $SE3_NETBIOS_NAME = "" Then 28 MsgBox(0,"ERREUR", "La variable $SE3_NETBIOS_NAME est vide." & @CRLF & "Le fichier " & @ScriptDir & "\se3ip.ini est-il renseigné?") 29 Exit 30 EndIf 31 32 $IP=_GetIP() 33 If $IP = "" Then 34 MsgBox(0,"ERREUR", "L'adresse IP du poste n'a pas été trouvée.") 35 Exit 36 EndIf 37 38 SplashTextOn("Informations SE3","Le serveur de fichiers SE3 se nomme " & $SE3_NETBIOS_NAME & @CRLF & "Son adresse IP est " & $SE3_IP & @CRLF & @CRLF & "L'adresse IP actuelle du poste Window$ est " & $IP,500,100,-1,0) 39 Sleep(3000) 40 41 $SystemDrive=_GetSystemDrive() 42 DirCreate($SystemDrive & "\netinst") 43 44 $old_way="n" 45 If $old_way == "y" Then 46 ;$cible_netlogon="\\" & $SE3_NETBIOS_NAME & "\netlogonzblouc" ; Pour simuler/forcer l'echec de l'acces sans lecteur 47 $cible_netlogon="\\" & $SE3_NETBIOS_NAME & "\netlogon" 48 $run=RunWait(@ComSpec & " /c net use " & $cible_netlogon, @SW_SHOW) 49 ;MsgBox(0,"Info","La tentative d'accès à " & $cible_netlogon & " a retourné " & $run) 50 ; Le test n'est pas fiable 51 ;If $run <> 0 Then 52 If Not FileExists($cible_netlogon & "\domscripts\se3.cmd") Then 53 54 SplashTextOn("ERREUR","Il n'a pas été possible d'accéder à \\" & $SE3_NETBIOS_NAME & "\netlogon" & @CRLF & "Vous avez bien fourni le couple (admin;motdepasse) pour accéder à \\" & $SE3_NETBIOS_NAME & "\Progs\install\domscripts, n'est-ce pas ?",500,100,-1,0) 55 Sleep(4000) 56 SplashTextOn("Nouvelle tentative","Nouvelle tentative en montant un lecteur réseau.",500,100,-1,0) 57 Sleep(2000) 58 59 $LECTEUR=_chercher_lecteur_libre() 60 61 $TEST_netlogon=_chercher_lecteur_reseau("NETLOGON") 62 If $TEST_netlogon <> "" Then 63 $LECTEUR=$TEST_netlogon 64 $menage=RunWait(@Comspec & " /c net use " & $LECTEUR & ": /delete /y") 65 EndIf 66 67 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 68 ; Il faut réclamer le nom de domaine et le mot de passe admin 69 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 70 If $DOMAINE == "" Then 71 $DOMAINE=InputBox("Informations supplémentaires","Nom de domaine: ","SAMBAEDU3","",-1,70) 72 EndIf 73 74 $MDP_ADMIN_SE3=InputBox("Informations supplémentaires","Mot de passe administrateur SE3: ","","*",-1,60) 75 76 ;$LECTEUR="P" 77 ;$run_acces_se3=RunWait(@Comspec & " /c net use " & $LECTEUR & ": \\" & $SE3_NETBIOS_NAME & "\netlogon /user:" & $DOMAINE & "\admin " & $MDP_ADMIN_SE3 & " /persistent:no & pause") 78 $run_acces_se3=RunWait(@Comspec & " /c net use " & $LECTEUR & ": \\" & $SE3_NETBIOS_NAME & "\netlogon /user:" & $DOMAINE & "\admin " & $MDP_ADMIN_SE3 & " /persistent:no") 79 If $run_acces_se3 == 0 Or $TEST_netlogon <> "" Then 80 $netlogon=$LECTEUR & ":" 81 Else 82 MsgBox(4096,"ERREUR","Il n'a pas été non plus possible de monter un lecteur " & $LECTEUR & ": pointant sur \\" & $SE3_NETBIOS_NAME & "\netlogon" & @CRLF & "ABANDON !") 83 Exit 84 EndIf 85 Else 86 $netlogon="\\" & $SE3_NETBIOS_NAME & "\netlogon" 87 EndIf 88 Else 89 ;$PAUSE_DEBUG=" & pause" 90 $PAUSE_DEBUG="" 91 If $CmdLine[0] == 0 Then 92 $NOTE="On ne tente pas de lire des paramètres" 93 Else 94 If StringInStr($CmdLine[1],"debug") Then 95 $PAUSE_DEBUG=" & pause" 96 EndIf 97 EndIf 98 99 $cible_netlogon="\\" & $SE3_NETBIOS_NAME & "\netlogon" 100 ;$cible_netlogon="\\" & $SE3_NETBIOS_NAME & "\netlogonzblouc" ; Pour simuler/forcer l'echec de l'acces sans lecteur 101 $run=RunWait(@ComSpec & " /c net use " & $cible_netlogon, @SW_SHOW) 102 ;MsgBox(0,"Info","La tentative d'accès à " & $cible_netlogon & " a retourné " & $run) 103 ; Le test n'est pas fiable 104 ;If $run <> 0 Then 105 If FileExists($cible_netlogon & "\domscripts\se3.cmd") Then 106 $netlogon="\\" & $SE3_NETBIOS_NAME & "\netlogon" 107 Else 108 ;$run=RunWait(@ComSpec & " /c net use Z: " & $cible_netlogon & $PAUSE_DEBUG, @SW_SHOW) 109 ; On force le démontage/remontage pour éviter des blagues avec plusieurs connexions au même partage ou sous plusieurs identités 110 $run=RunWait(@ComSpec & " /c net use " & $cible_netlogon & " /DELETE /Y & net use Z: " & $cible_netlogon & $PAUSE_DEBUG, @SW_SHOW) 111 ;MsgBox(0,"Info","La tentative d'accès à " & $cible_netlogon & " a retourné " & $run) 112 ; Le test n'est pas fiable 113 ;If $run <> 0 Then 114 ;If Not FileExists($cible_netlogon & "\domscripts\se3.cmd") Then 115 If Not FileExists("z:\domscripts\se3.cmd") Then 116 ; Le montage a échoué 117 118 ;SplashTextOn("ERREUR","Il n'a pas été possible d'accéder à \\" & $SE3_NETBIOS_NAME & "\netlogon" & @CRLF & "Vous avez bien fourni le couple (admin;motdepasse) pour accéder à \\" & $SE3_NETBIOS_NAME & "\Progs\install\domscripts, n'est-ce pas ?",500,100,-1,0) 119 SplashTextOn("ERREUR","Il n'a pas été possible d'accéder à \\" & $SE3_NETBIOS_NAME & "\netlogon" & @CRLF & "Vous avez bien fourni le couple (adminse3;motdepasse) pour accéder à \\" & $SE3_NETBIOS_NAME & "\netlogon\domscripts, n'est-ce pas ?",500,100,-1,0) 120 Sleep(4000) 121 SplashTextOn("Nouvelle tentative","Nouvelle tentative en montant un lecteur réseau.",500,100,-1,0) 122 Sleep(2000) 123 124 ;$LECTEUR=_chercher_lecteur_libre() 125 $LECTEUR="Z" 126 127 ; On teste si NETLOGON est monté (cela pourrait gêner si c'était ailleurs qu'en Z:) 128 $TEST_netlogon=_chercher_lecteur_reseau("NETLOGON") 129 If $TEST_netlogon <> "" Then 130 $LECTEUR=$TEST_netlogon 131 $menage=RunWait(@Comspec & " /c net use " & $LECTEUR & ": /delete /y") 132 EndIf 133 134 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 135 ; Il faut réclamer le nom de domaine et le mot de passe admin 136 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 137 If $DOMAINE == "" Then 138 $DOMAINE=InputBox("Informations supplémentaires","Nom de domaine: ","SAMBAEDU3","",-1,70) 139 EndIf 140 141 ;$MDP_ADMIN_SE3=InputBox("Informations supplémentaires","Mot de passe administrateur SE3: ","","*",-1,60) 142 $MDP_ADMINSE3=InputBox("Informations supplémentaires","Mot de passe du compte adminse3: ","","*",-1,60) 143 144 ;$LECTEUR="P" 145 ;$run_acces_se3=RunWait(@Comspec & " /c net use " & $LECTEUR & ": \\" & $SE3_NETBIOS_NAME & "\netlogon /user:" & $DOMAINE & "\admin " & $MDP_ADMIN_SE3 & " /persistent:no") 146 ;$run_acces_se3=RunWait(@Comspec & " /c net use " & $LECTEUR & ": \\" & $SE3_NETBIOS_NAME & "\netlogon /user:" & $DOMAINE & "\adminse3 " & $MDP_ADMINSE3 & " /persistent:no & pause") 147 ; On force le démontage/remontage pour éviter des blagues avec plusieurs connexions au même partage ou sous plusieurs identités 148 $run_acces_se3=RunWait(@Comspec & " /c net use \\" & $SE3_NETBIOS_NAME & "\netlogon /DELETE /Y & net use " & $LECTEUR & ": \\" & $SE3_NETBIOS_NAME & "\netlogon /user:" & $DOMAINE & "\adminse3 " & $MDP_ADMINSE3 & " /persistent:no " & $PAUSE_DEBUG) 149 If $run_acces_se3 == 0 Or $TEST_netlogon <> "" Then 150 $netlogon=$LECTEUR & ":" 151 Else 152 MsgBox(4096,"ERREUR","Il n'a pas été non plus possible de monter un lecteur " & $LECTEUR & ": pointant sur \\" & $SE3_NETBIOS_NAME & "\netlogon" & @CRLF & "ABANDON !") 153 Exit 154 EndIf 155 Else 156 $netlogon="Z:" 157 EndIf 158 EndIf 159 EndIf 160 161 SplashTextOn("Information","Copie des fichiers " & $netlogon & "\domscripts\*.* vers " & $SystemDrive & "\netinst\",500,100,-1,0) 162 Sleep(2000) 163 $COPIE=FileCopy($netlogon & "\domscripts\*.*", $SystemDrive & "\netinst\", 1) 164 If $COPIE = 0 Then 165 MsgBox(48,"ERREUR","Echec de la copie des fichiers de " & $netlogon & "\domscripts\ vers " & $SystemDrive & "\netinst\") 166 Exit 167 EndIf 168 169 SplashTextOn("Information","Copie de " & $netlogon & "\CPAU.exe vers " & $SystemDrive & "\netinst\",500,100,-1,0) 170 Sleep(2000) 171 ;copy /y \\%netbios_name%\netlogon\CPAU.exe %Systemdrive%\Netinst\ 172 $COPIE=FileCopy($netlogon & "\CPAU.exe", $SystemDrive & "\netinst\", 1) 173 If $COPIE = 0 Then 174 MsgBox(48,"ERREUR","Echec de la copie de " & $netlogon & "\CPAU.exe vers " & $SystemDrive & "\netinst\") 175 Exit 176 EndIf 177 178 179 If FileExists($netlogon & "\machine\" & $IP & "\action.bat") Then 180 SplashTextOn("Information","Copie de " & $netlogon & "\machine\" & $IP & "\action.bat vers " & $SystemDrive & "\netinst\",500,100,-1,0) 181 Sleep(1000) 182 FileCopy($netlogon & "\machine\" & $IP & "\action.bat", $SystemDrive & "\netinst\", 1) 183 Else 184 SplashTextOn("Information","Recherche ou saisie du nom de machine...",500,100,-1,0) 185 Sleep(1000) 186 187 ; Nom de la station 188 $NAME="" 189 190 ;for /f "delims==- tokens=2-7" %%a in ('nbtstat -a %computername% ^|find "Adresse MAC"') do @set mac=%%a%%b%%c%%d%%e%%f 191 $MAC=_GetMACFromIP($IP) 192 $MAC_ELAGUEE=StringRegExpReplace($MAC,"[^A-Za-z0-9]","") 193 ;:: recuperation du nom de la machine 194 If FileExists($SystemDrive & "\netinst\unattend.csv") Then 195 196 ;if not exist %systemdrive%\netinst\unattend.csv goto nounattend 197 ;for /f "tokens=3 delims=," %%a in ('findstr %mac% %systemdrive%\netinst\unattend.csv') do set NAME=%%~a 198 199 $FICH=FileOpen($SystemDrive & "\netinst\unattend.csv",0) 200 If $FICH = -1 Then 201 ; Le fichier n'existe pas ou on n'a pas pu l'ouvrir 202 MsgBox(0,"Information", "Le fichier " & $SystemDrive & "\netinst\unattend.csv n'existe pas, ou n'a pas pu être ouvert.", 2) 203 Else 204 While 1 205 $LIGNE=FileReadLine($FICH) 206 If @error = -1 Then ExitLoop 207 If StringRight(StringLeft($LIGNE,13),12) = $MAC_ELAGUEE Then 208 $TEMP=StringSplit($LIGNE,"""") 209 $NAME=$TEMP[6] 210 ExitLoop 211 EndIf 212 WEnd 213 FileClose($FICH) 214 EndIf 215 EndIf 216 217 If $NAME == "" Then 218 SplashTextOn("Information","Aucune correspondance n'a été trouvée dans le fichier unattend.csv" & @CRLF & "Il vous est proposé d'utiliser le nom actuel de la machine: " & @ComputerName,500,100,-1,0) 219 $nomtrouve = 0 220 $NAME=@ComputerName 221 Else 222 ; le nom de la machine existe dans unattend.csv : la fenêtre demandant le nom se fermera au bout de x secondes grace au tag $nomtrouve=1. 223 $nomtrouve = 1 224 If StringLower($NAME) == StringLower(@ComputerName) Then 225 SplashTextOn("Information","Le nom de machine " & $NAME & " a été trouvé dans le fichier unattend.csv" & @CRLF & "C'est aussi le nom actuel de la machine.",500,100,-1,0) 226 Else 227 SplashTextOn("Information","Le nom de machine " & $NAME & " a été trouvé dans le fichier unattend.csv" & @CRLF & "alors que le nom actuel de la machine est " & @ComputerName,500,100,-1,0) 228 EndIf 229 EndIf 230 Sleep(3000) 231 232 While 1 233 If $nomtrouve == 1 Then 234 ; le nom a été trouvé dans unattend.csv, on met un timeout de 60 sec à la fenêtre. 235 $Saisie=InputBox("Nom de machine", "Veuillez saisir le nom de machine souhaité: ", $NAME, "", Default, 140, Default, Default,60) 236 If @error == 0 Then 237 ; le nom proposé a été modifié et on a cliqué sur OK Alors on mémorise dans $NAME 238 $NAME = $Saisie 239 EndIf 240 Else 241 $NAME=InputBox("Nom de machine", "Veuillez saisir le nom de machine souhaité: ", $NAME, "", Default, 140) 242 EndIf 243 If @error = 1 Then 244 ; On a cliqué sur Cancel 245 MsgBox(16,"ABANDON","Vous n'avez pas souhaité poursuivre.",1) 246 Exit 247 EndIf 248 If $NAME = "" Then 249 MsgBox(48,"ERREUR","Le nom de machine ne doit pas être vide.") 250 Else 251 $NAME_CORRIGE=StringRegExpReplace($NAME,"[^A-Za-z0-9_-]","") 252 If $NAME = $NAME_CORRIGE Then 253 $RETOUR=MsgBox(0,"Information","La machine va être mise au domaine sous le nom " & $NAME, 2) 254 ; La fenêtre se referme toute seule après 2 secondes... 255 ; On ne peut pas tester $RETOUR == 1 256 ; Si rien n'a été cliqué, c'est que c'est OK. 257 If $RETOUR = 2 Then 258 ; On a cliqué sur Cancel 259 MsgBox(16,"ABANDON","Vous n'avez pas souhaité poursuivre.",1) 260 Exit 261 Else 262 ExitLoop 263 EndIf 264 Else 265 If $NAME_CORRIGE = "" Then 266 ; On repart dans la boucle 267 MsgBox(48,"Information","Des caractères invalides ont été saisis." & @CRLF & "Veuillez-vous limiter à [A-Za-z0-9_-]",3) 268 ;$NAME="" 269 Else 270 $RETOUR=MsgBox(4,"Information","Des caractères invalides ont été saisis." & @CRLF & "Le nom proposé est " & $NAME_CORRIGE & @CRLF & "Acceptez-vous ce nom? (sinon préférez-vous corriger)?") 271 If $RETOUR = 6 Then 272 $NAME=$NAME_CORRIGE 273 ExitLoop 274 ;Else 275 ;$NAME="" 276 ;If $RETOUR = 2 Then 277 ; MsgBox(16,"ABANDON","Vous n'avez pas souhaité poursuivre.",1) 278 ; Exit 279 ;EndIf 280 EndIf 281 EndIf 282 EndIf 283 EndIf 284 ; A FAIRE: Il faudrait aussi contrôler si le nom est déjà dans unattend.csv 285 WEnd 286 287 ; Ca ne devrait pas arriver, mais deux précautions valent mieux qu'une 288 If $NAME = "" Then 289 MsgBox(16,"ERREUR","Le nom de machine est vide." & @CRLF & "On ne peut pas poursuivre") 290 Exit 291 EndIf 292 293 ;:nounattend 294 ;If "$NAME" = "" Then 295 ; cls 296 ;set /P NAME=entrez le nom de la machine : 297 298 ;echo la machine va etre mise au domaine sous le nom %NAME% 299 ;echo set ACTION=renomme> %SystemDrive%\Netinst\action.bat 300 ;echo set NAME=%NAME%>> %SystemDrive%\Netinst\action.bat 301 $FICH=FileOpen($SystemDrive & "\netinst\action.bat",2) 302 If $FICH = -1 Then 303 MsgBox(16,"ERREUR", "Il n'a pas été possible de créer le fichier " & $SystemDrive & "\netinst\action.bat") 304 Exit 305 EndIf 306 307 FileWriteLine($FICH,"set ACTION=renomme" & @CRLF) 308 FileWriteLine($FICH,"set NAME=" & $NAME & @CRLF) 309 FileClose($FICH) 310 EndIf 311 312 $temoin_demander_pass_admin="y" 313 If FileExists($netlogon & "\machine\" & $IP & "\localpw.job") Then 314 $COPIE=FileCopy($netlogon & "\machine\" & $IP & "\localpw.job", $SystemDrive & "\netinst\", 1) 315 If $COPIE = 0 Then 316 MsgBox(48,"ERREUR","Echec de la copie de " & $netlogon & "\machine\" & $IP & "\localpw.job vers " & $SystemDrive & "\netinst\" & @CRLF & "Vous allez être invité à donner le mot de passe du compte administrateur local.") 317 Else 318 $temoin_demander_pass_admin="n" 319 EndIf 320 EndIf 321 322 323 _Message("Lancement du programme rejointSE3-elevated.exe sur architecture " & @OSArch & " et sur OS " & @OSVersion & ".") 324 325 If @OSArch = "X86" Then 326 Switch @OSVersion 327 Case "WIN_XP" 328 RunWait($SystemDrive & "\Netinst\rejointSE3-elevated.exe " & $temoin_demander_pass_admin, $SystemDrive & "\Netinst") 329 Case "WIN_7" 330 _Execute_elevated($SystemDrive & "\Netinst\rejointSE3-elevated.exe " & $temoin_demander_pass_admin) 331 Case "WIN_VISTA" 332 _Execute_elevated($SystemDrive & "\Netinst\rejointSE3-elevated.exe " & $temoin_demander_pass_admin) 333 ; etc 334 Case Else 335 MsgBox(0,"", "OS non référencé : tentative SANS élévation de privilège.") 336 RunWait($SystemDrive & "\Netinst\rejointSE3-elevated.exe " & $temoin_demander_pass_admin, $SystemDrive & "\Netinst") 337 EndSwitch 338 Else ; ( x64 ) 339 Switch @OSVersion 340 Case "WIN_XP" 341 RunWait($SystemDrive & "\Netinst\rejointSE3-elevated-64.exe " & $temoin_demander_pass_admin, $SystemDrive & "\Netinst") 342 Case "WIN_7" 343 _Execute_elevated($SystemDrive & "\Netinst\rejointSE3-elevated-64.exe " & $temoin_demander_pass_admin) 344 Case "WIN_VISTA" 345 _Execute_elevated($SystemDrive & "\Netinst\rejointSE3-elevated-64.exe " & $temoin_demander_pass_admin) 346 Case Else 347 MsgBox(0,"", "OS non référencé : tentative AVEC élévation de privilège.") 348 _Execute_elevated($SystemDrive & "\Netinst\rejointSE3-elevated-64.exe " & $temoin_demander_pass_admin) 349 EndSwitch 350 EndIf 351 352 ; FIN DU SCRIPT : toutes les autres commandes ont été copiées dans rejointSE3-elevated.au3 puis compilées 353 354 355 Func _Execute_elevated($script) 356 RunWait("cscript " & $SystemDrive & "\Netinst\execute-elevated.js " & $script , $SystemDrive & "\Netinst") 357 EndFunc 358 359 Func _Message($mess) 360 SplashTextOn("Information", $mess ,500,100,-1,0) 361 Sleep(1000) 362 EndFunc 363
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |