[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 ; Bibliotheque de fonctions 2 ; $Id: se3_crob.lib.au3 5520 2010-05-14 06:00:36Z crob $ 3 ; Stephane Boireau, ex-Animateur de Secteur d'une académie qui croit en l'appropriation des TICE par tous 4 ; Modification: 25/04/2010 5 6 ;============================================================ 7 ; Trouve sur le net: http://www.autoitscript.com/forum/index.php?showtopic=34736 8 Func _GetMACFromIP($sIP) 9 Local $MAC, $MACSize 10 Local $i, $s, $r, $iIP 11 $MAC = DllStructCreate("byte[6]") 12 $MACSize = DllStructCreate("int") 13 DllStructSetData($MACSize, 1, 6) 14 $r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP) 15 $iIP = $r[0] 16 $r = DllCall("iphlpapi.dll", "int", "SendARP", "int", $iIP, "int", 0, "ptr", DllStructGetPtr($MAC), "ptr", DllStructGetPtr($MACSize)) 17 $s = "" 18 For $i = 0 To 5 19 If $i Then $s = $s & ":" 20 $s = $s & Hex(DllStructGetData($MAC, 1, $i + 1), 2) 21 Next 22 Return $s 23 EndFunc 24 ;============================================================ 25 Func _GetIP() 26 Dim $tab_ip[4] 27 $tab_ip[0]=@IPAddress1 28 $tab_ip[1]=@IPAddress2 29 $tab_ip[2]=@IPAddress3 30 $tab_ip[3]=@IPAddress4 31 32 $return_ip="" 33 34 For $i = 0 to UBound($tab_ip) - 1 35 $ip_test=$tab_ip[$i] 36 If $ip_test <> "0.0.0.0" Then 37 If $ip_test <> "127.0.0.1" Then 38 $return_ip=$ip_test 39 ExitLoop 40 EndIf 41 EndIf 42 Next 43 44 Return $return_ip 45 EndFunc 46 ;============================================================ 47 Func _GetValue($nom,$chemin_fichier) 48 $valeur="" 49 50 $FICH= FileOpen($chemin_fichier,0) 51 If $FICH = -1 Then 52 ;MsgBox(0, "Erreur", "Il n'a pas été possible d'ouvrir le fichier '" & $chemin_fichier & "'!") 53 Exit 54 EndIf 55 56 While 1 57 $LIGNE = FileReadLine($FICH) 58 ;MsgBox(0,"Info",$LIGNE) 59 If @error = -1 Then ExitLoop 60 If StringInStr ($LIGNE,$nom & "=") <> 0 Then 61 $LIGNE2_TROUVEE = $LIGNE 62 63 ;MsgBox(0,"Info","Ligne trouvée:" & $LIGNE) 64 65 $TEMP=StringSplit($LIGNE, "=") 66 $valeur=$TEMP[1] 67 ExitLoop 68 EndIf 69 Wend 70 71 Return $valeur 72 EndFunc 73 ;============================================================ 74 Func verif_ip($ip) 75 ; Contrôle des saisies: 76 $erreur = "non" 77 $ip_sans_point = StringReplace($ip,".","") 78 $nombre_de_remplacements = @extended 79 If StringIsDigit($ip_sans_point) AND $nombre_de_remplacements == 3 Then 80 $octet = StringSplit($ip,".") 81 ; $octet[0] donne le nombre d'indices du tableau. 82 For $i = 1 to 4 83 ;MsgBox(0,"Info","octet[" & $i & "] = " & $octet[$i]) 84 If $octet[$i] < 0 OR $octet[$i] > 255 Then 85 $erreur = "oui" 86 ExitLoop 87 EndIf 88 Next 89 Else 90 $erreur = "oui" 91 EndIf 92 93 ;MsgBox(0,"Info","erreur = " & $erreur) 94 95 If $erreur == "oui" Then 96 MsgBox(0, "Erreur", "Un champ contient des caractères non valides" & @CRLF & "ou ne contient pas les 4 octets séparés par des points.") 97 return "erreur" 98 EndIf 99 EndFunc 100 ;============================================================ 101 Func _GetSystemDrive() 102 $TEMP=StringSplit(@WindowsDir,":") 103 ;$TEMP[0] contient la dimension du tableau 104 ;$TEMP[1] contient ce qui précède le premier ':' 105 Return $TEMP[1] & ":" 106 EndFunc 107 ;============================================================ 108 ; http://sourceforge.net/projects/winipchanger/ 109 ; License: GNU General Public License (GPL) 110 ; A compléter avec les fonctions utiles pour le changement d'IP... dans le cadre du paquet post-clonage 111 112 Func _Get_Adapters() 113 $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2") 114 $wbemFlagReturnImmediately = 0x10 115 $wbemFlagForwardOnly = 0x20 116 117 $Adapters = "" 118 SplashTextOn("Liste des interfaces réseau", "Please Wait...", 170, 40) 119 $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) 120 For $objItem in $colItems 121 If $objItem.NetConnectionID <> "" Then $Adapters = $Adapters & "|" & $objItem.NetConnectionID 122 Next 123 SplashOff() 124 If $Adapters = "" Then $Adapters="Aucune interface reseau n'a ete trouvee." 125 126 ; On retourne quelque chose comme "|Connexion au réseau local" ou "|Connexion au réseau local|Connexion au réseau local 2|Connexion réseau sans fil" avec le | en premier caractère. 127 Return $Adapters 128 EndFunc 129 130 ; Fonction un peu bricolée d'après celle de winipchanger 131 Func _Set_DHCP($interface) 132 $show=@SW_SHOW 133 $WinTitle="Changement de l'adressage IP" 134 135 $utiliser_interface_reseau_bat = "n" 136 ; Ca ne fonctionne pas... il dit que l'interface n'est pas valide... pb d'accents DOS probablement. 137 138 ProgressOn($WinTitle, "Changing IP Address") 139 If FileExists(@ScriptDir & "\interface_reseau.bat") And $utiliser_interface_reseau_bat = "y" Then 140 $run = RunWait(@ComSpec & " /c " & 'call ' @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip set address name="%INTERFACE%" source=dhcp & netsh interface ip set address name="%INTERFACE%" source=dhcp', "", $show) 141 ProgressSet(20) 142 $run3 = RunWait(@ComSpec & " /c " & 'call ' @ScriptDir & '\interface_reseau.bat & @echo netsh int ip set dns "%INTERFACE%" dhcp & netsh int ip set dns "%INTERFACE%" dhcp', "", $show) 143 ProgressSet(40) 144 RunWait(@ComSpec & " /c " & 'call ' @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip set wins "%INTERFACE%" dhcp & netsh interface ip set wins "%INTERFACE%" dhcp', "", $show) 145 ProgressSet(60) 146 RunWait(@ComSpec & " /c " & 'call ' @ScriptDir & '\interface_reseau.bat & @echo ipconfig /release "%INTERFACE%" & ipconfig /release "%INTERFACE%"', "", $show) 147 ProgressSet(80) 148 $run2 = RunWait(@ComSpec & " /c " & 'call ' @ScriptDir & '\interface_reseau.bat & @echo ipconfig /renew "%INTERFACE%" & ipconfig /renew "%INTERFACE%"', "", $show) 149 Else 150 $run = RunWait(@ComSpec & " /c " & '@echo netsh interface ip set address name="' & $interface & '" source=dhcp & netsh interface ip set address name="' & $interface & '" source=dhcp', "", $show) 151 ProgressSet(20) 152 $run3 = RunWait(@ComSpec & " /c " & '@echo netsh int ip set dns "' & $interface & '" dhcp & netsh int ip set dns "' & $interface & '" dhcp', "", $show) 153 ProgressSet(40) 154 RunWait(@ComSpec & " /c " & '@echo netsh interface ip set wins "' & $interface & '" dhcp & netsh interface ip set wins "' & $interface & '" dhcp', "", $show) 155 ProgressSet(60) 156 RunWait(@ComSpec & " /c " & '@echo ipconfig /release "' & $interface & '" & ipconfig /release "' & $interface & '"', "", $show) 157 ProgressSet(80) 158 $run2 = RunWait(@ComSpec & " /c " & '@echo ipconfig /renew "' & $interface & '" & ipconfig /renew "' & $interface & '"', "", $show) 159 EndIf 160 ProgressSet(100) 161 Sleep(500) 162 ProgressOff() 163 EndFunc 164 165 ; Fonction un peu bricolée d'après celle de winipchanger 166 Func _Set_ip($interface, $IP, $NETMASK, $GW, $DNS, $WINS) 167 $show=@SW_SHOW 168 $WinTitle="Changement de l'adressage IP" 169 170 ; $pause non vide perturbe le test de succès du changement IP 171 ;$pause=" & pause" 172 $pause="" 173 174 $utiliser_interface_reseau_bat = "n" 175 ; Ca ne fonctionne pas... il dit que l'interface n'est pas valide... pb d'accents DOS probablement. 176 177 ProgressOn($WinTitle, "Changement de l'adresse (IP statique)") 178 If FileExists(@ScriptDir & "\interface_reseau.bat") And $utiliser_interface_reseau_bat = "y" Then 179 If $GW <> "" Then 180 $run = RunWait(@ComSpec & " /c " & 'call ' & @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip set address name="%INTERFACE%" static ' & $IP & " " & $NETMASK & " " & $GW & ' 1 & netsh interface ip set address name="%INTERFACE%" static ' & $IP & " " & $NETMASK & " " & $GW & " 1" & $pause, "", $show) 181 Else 182 $run = RunWait(@ComSpec & " /c " & 'call ' & @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip set address name="%INTERFACE%" static ' & $IP & " " & $NETMASK & ' & netsh interface ip set address name="%INTERFACE%" static ' & $IP & " " & $NETMASK & $pause, "", $show) 183 EndIf 184 ProgressSet(50) 185 186 If $DNS <> "" Then 187 $rundeldns = RunWait(@ComSpec & " /c " & 'call ' & @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip delete dns "%INTERFACE%" all' & ' & netsh interface ip delete dns "%INTERFACE%" all' & $pause, "", $show) 188 If $DNS <> "none" And $DNS <> "aucun" Then 189 $rundns = RunWait(@ComSpec & " /c " & 'call ' & @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip set dns name="%INTERFACE%" static ' & $DNS & ' & netsh interface ip set dns name="%INTERFACE%" static ' & $DNS & $pause, "", $show) 190 EndIf 191 EndIf 192 193 If $WINS <> "" Then 194 $rundelwins = RunWait(@ComSpec & " /c " & 'call ' & @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip delete wins "%INTERFACE%" all' & ' & netsh interface ip delete wins "%INTERFACE%" all' & $pause, "", $show) 195 If $DNS <> "none" And $DNS <> "aucun" Then 196 $runwins = RunWait(@ComSpec & " /c " & 'call ' & @ScriptDir & '\interface_reseau.bat & @echo netsh interface ip set wins name="%INTERFACE%" static ' & $WINS & ' & netsh interface ip set wins name="%INTERFACE%" static ' & $WINS & $pause, "", $show) 197 EndIf 198 EndIf 199 Else 200 If $GW <> "" Then 201 ;$run = RunWait(@ComSpec & " /c " & 'netsh interface ip set address name="' & $interface & '" static ' & $IP & " " & $NETMASK & " " & $GW & " 1", "", $show) 202 $run = RunWait(@ComSpec & " /c " & '@echo netsh interface ip set address name="' & $interface & '" static ' & $IP & " " & $NETMASK & " " & $GW & ' 1 & netsh interface ip set address name="' & $interface & '" static ' & $IP & " " & $NETMASK & " " & $GW & " 1" & $pause, "", $show) 203 Else 204 $run = RunWait(@ComSpec & " /c " & '@echo netsh interface ip set address name="' & $interface & '" static ' & $IP & " " & $NETMASK & ' & netsh interface ip set address name="' & $interface & '" static ' & $IP & " " & $NETMASK & $pause, "", $show) 205 EndIf 206 ProgressSet(50) 207 208 If $DNS <> "" Then 209 $rundeldns = RunWait(@ComSpec & " /c " & '@echo netsh interface ip delete dns "' & $interface & '" all' & ' & netsh interface ip delete dns "' & $interface & '" all' & $pause, "", $show) 210 If $DNS <> "none" And $DNS <> "aucun" Then 211 ;$rundns = RunWait(@ComSpec & " /c " & 'netsh interface ip set dns name="' & $interface & '" static ' & $DNS, "", $show) 212 $rundns = RunWait(@ComSpec & " /c " & '@echo netsh interface ip set dns name="' & $interface & '" static ' & $DNS & ' & netsh interface ip set dns name="' & $interface & '" static ' & $DNS & $pause, "", $show) 213 EndIf 214 EndIf 215 216 If $WINS <> "" Then 217 $rundelwins = RunWait(@ComSpec & " /c " & '@echo netsh interface ip delete wins "' & $interface & '" all' & ' & netsh interface ip delete wins "' & $interface & '" all' & $pause, "", $show) 218 If $DNS <> "none" And $DNS <> "aucun" Then 219 ;$runwins = RunWait(@ComSpec & " /c " & 'netsh interface ip set wins name="' & $interface & '" static ' & $WINS, "", $show) 220 $runwins = RunWait(@ComSpec & " /c " & '@echo netsh interface ip set wins name="' & $interface & '" static ' & $WINS & ' & netsh interface ip set wins name="' & $interface & '" static ' & $WINS & $pause, "", $show) 221 EndIf 222 EndIf 223 EndIf 224 ProgressSet(100) 225 Sleep(500) 226 ProgressOff() 227 228 If $run = 0 Then 229 MsgBox(0,$WinTitle, "L'adresse a été modifiée avec succès.",3) 230 Sleep(1000) 231 Else 232 MsgBox(0,$WinTitle, "Echec du changement d'adresse." & @CRLF & "Veuillez contrôler vos paramètres et cablage.") 233 EndIf 234 EndFunc 235 236 ;============================================================ 237 Func _lire_unattend_csv($CHEMIN, $MAC) 238 ; Pour rechercher le NOMPC correspondant à une adresse MAC 239 ; On lit des lignes du type "000C29BBCF7C","ComputerName","xpbof" 240 241 ; Nettoyagge de l'adresse MAC 242 $MAC=StringRegExpReplace($MAC,"[^A-Za-z0-9]","") 243 244 $NOMPC="" 245 246 $FICH=FileOpen($CHEMIN,0) 247 If $FICH = -1 Then 248 ;MsgBox(0, "Erreur", "Il n'a pas été possible de créer le fichier!") 249 Else 250 While 1 251 $LIGNE=FileReadLine($FICH) 252 If @error = -1 Then ExitLoop 253 ;MsgBox(0,"Info","LIGNE=" & $LIGNE) 254 If StringRegExp(StringLower($LIGNE), "^""" & StringLower($MAC)) Then 255 ;MsgBox(0,"Info","MAC trouvée : " & $LIGNE) 256 $TAB=StringSplit($LIGNE,'"') 257 $NOMPC=$TAB[6] 258 ; On devrait sortir à ce stade par 259 ;ExitLoop 260 ; mais, cela complique le traitement d'ajout d'entrées dans le unattend.csv 261 ; En continuant dans la boucle, c'est le dernier nom ajouté dans le fichier 262 ; (pour l'adresse MAC) qui est pris en compte. 263 EndIf 264 WEnd 265 EndIf 266 FileClose($FICH) 267 268 Return $NOMPC 269 EndFunc 270 271 ;$CHEMIN="C:\temp\se3_1.50\domscripts\unattend.csv" 272 ;$MAC="000C29BBCF7C" 273 ;$NOMPC=_lire_unattend_csv($CHEMIN, $MAC) 274 ;MsgBox(0,"Info","MAC=" & $MAC & @CRLF & "NOMPC=" & $NOMPC) 275 276 Func _completer_unattend_csv($CHEMIN, $NOMPC, $MAC) 277 ; Nettoyagge de l'adresse MAC 278 $MAC=StringRegExpReplace($MAC,"[^A-Za-z0-9]","") 279 280 ;If FileExists($CHEMIN) Then 281 $FICH=FileOpen($CHEMIN,1) 282 If $FICH = -1 Then 283 MsgBox(0, "Erreur", "Il n'a pas été possible d'ouvrir le fichier " & $CHEMIN & " en écriture !") 284 Return False 285 Exit 286 Else 287 FileWriteLine($FICH, """" & $MAC & """,""ComputerName"",""" & $NOMPC & """") 288 FileWriteLine($FICH, """" & $NOMPC & """,""FullName"",""" & $NOMPC & """") 289 EndIf 290 FileClose($FICH) 291 Return True 292 ;Else 293 ; MsgBox(0, "Erreur", "Le fichier " & $CHEMIN & " n'a pas été trouvé !") 294 ;EndIf 295 EndFunc 296 297 Func _chercher_lecteur_libre() 298 $RETOUR="" 299 300 ; En commençant à A, on obtient des erreurs??? 301 ;$alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 302 $alphabet="CDEFGHIJKLMNOPQRSTUVWXYZ" 303 For $i = 1 to StringLen($alphabet) 304 $lecteur=StringMid($alphabet,$i,1) 305 ;MsgBox(0,"Info","lecteur " & $i & "=" & $lecteur) 306 ;If FileExists($lecteur & ":\NUL") Then 307 If Not FileExists($lecteur & ":\") Then 308 ; Ce n'est ni une partition ni un lecteur réseau 309 310 ;MsgBox(0,"Info",$lecteur & ":\ non trouvé") 311 ; Ca peut encore être un lecteur CD ou disquette vide 312 $TEST=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\" & $lecteur, "BaseClass") 313 ;MsgBox(0,"Info","lecteur=" & $lecteur & @CRLF & "TEST=" & $TEST & @CRLF & "@error=" & @error) 314 If @error <> 0 Then 315 ; Ce n'est pas non plus un périphérique amovible absent 316 $RETOUR=$lecteur 317 ExitLoop 318 EndIf 319 EndIf 320 Next 321 322 ;A REVOIR: Remplacer par DriveGetDrive() 323 324 Return $RETOUR 325 EndFunc 326 327 ;_chercher_lecteur_libre() 328 329 Func _chercher_lecteur_reseau($PARTAGE) 330 $RETOUR="" 331 332 ;$var = DriveGetDrive( "all" ) 333 $var = DriveGetDrive( "NETWORK" ) 334 If NOT @error Then 335 ;MsgBox(4096,"", "Found " & $var[0] & " drives") 336 For $i = 1 to $var[0] 337 $Label=DriveGetLabel($var[$i]) 338 ;MsgBox(4096,"Drive " & $i, "$var[$i]=" & $var[$i] & @CRLF & "Label=" & $Label) 339 If StringLower($Label) == StringLower($PARTAGE) Then 340 $RETOUR=StringRegExpReplace($var[$i],"[^A-Za-z]","") 341 ExitLoop 342 EndIf 343 Next 344 EndIf 345 346 Return $RETOUR 347 EndFunc
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 |