[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-domain/home/netlogon/domscripts/ -> se3_crob.lib.au3 (source)

   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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1