nit0o
Messages postés4Date d'inscriptionvendredi 15 décembre 2000StatutMembreDernière intervention 4 juillet 2008
-
4 juil. 2008 à 10:15
MisterWhiteLapin
Messages postés19Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention28 juillet 2008
-
4 juil. 2008 à 16:31
Bonjour tout le monde,
J'ai un petit soucis avec un script qui me permet de récupérer l'adresse Mac d'une machine pour ne garder que les 6 derniers caractères pour y ajouter 4 caractères afin d'avoir un nom de machine.
Pour le renommage j'utilise "newsid /a".
Tout se passe bien jusqu'au moment du renommage, il semble que le newsid ne prend pas en compte ma variable strFinal.
J'espère être assez claire et vous remercie pour votre aide.
A+
Le code :
----------------------------------------------------------------------------------------------------
'A Windows Script that deals with the output from a shell command
'Compiled by Pramod S Nair
'http://www.wisdombay.com
'Written 4:09 PM 04/21/2006
Dim objWshShell
Dim objEx
dim intInterfaceNo
dim rmMachine
dim strFinal
Set objWshShell = CreateObject("WScript.Shell")
' Récupération du Hostname
Set WshNetwork = WScript.CreateObject("WScript.Network")
rmMachine = WshNetwork.ComputerName
if rmMachine<>"" Then
'We are going to execute the nbtstat -a hostname command in a cmd shell launched with /c param. so it quits after execution
strToExec = "nbtstat -a " & rmMachine
'Make an Exec Obj
Set objEx = objWshShell.Exec(strToExec)
'Now go through the output from the shell command and weed out the line in which we are interested
Dim strOut
strOut = "MAC Address of " & rmMachine & " is "
Do While objEx.StdOut.AtEndOfStream <> True
'get current line
strCurLine = objEx.StdOut.ReadLine
'GET MAC ADDRESS 'Look out for a line with MAC Address If InStr(strCurLine,"Adresse MAC") Then
strAr = split(strCurLine,"=")
dim rMac
rMac = strAr(1)
End If
Loop
If len(trim(rMac))=0 Then
strOut = strOut & "Not Available. " & vbnewline & "Please check the hostname/ip address (" & rmMachine &") that you provided"
Else
strOut = strOut & strAr(1)
End If
' Supprime les "-", récupère les 6 derniers caractères de la MAC et ajoute "HP-"
strFinal = Replace(strOut,"-","")
strFinal = Right(strFinal, Len(strFinal) -35)
strFinal = "HPC-" & strFinal
nit0o
Messages postés4Date d'inscriptionvendredi 15 décembre 2000StatutMembreDernière intervention 4 juillet 2008 4 juil. 2008 à 10:18
Oups j'ai oublié une chose (je n'ai pas vu de bouton pour modifier mon post), juste avant le "Dim exeCmd" si je donne une valeur à strFinal, par exemple " strFinal = "HPC-TOTOTO", le renommage fonctionne..
nit0o
Messages postés4Date d'inscriptionvendredi 15 décembre 2000StatutMembreDernière intervention 4 juillet 2008 4 juil. 2008 à 13:17
Salut MisterWhiteLapin,
Voici ce que j'obtiens :
----------------------------------------------------
Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\nit0o>cscript "C:\Documents and Settings\nit0o\Bureau\
Copie de test.vbs"
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
c:\NewSid\newsid.exe -a HPC-FCFFFF
C:\Documents and Settings\nit0o>
------------------------------------------------------
> Le newsid s'effectue, la machine reboot automatiquement mais le nouveau hostname n'est pas pris en compte.
Par contre comme je le disais plus haut, si je donne une valeur à strFinal (ex : strFinal = "HPC-FCFFFF") avant la déclaration de exeCmd, le newsid se fait correctement..
MisterWhiteLapin
Messages postés19Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention28 juillet 2008 4 juil. 2008 à 14:42
Bonjour,
Il y a vraiment un truc bizard dans ce cas. Si ça se trouve (mais ce n'est qu'une hypothèse à prendre comme telle), lorsque tu fais ton:
strOut = strOut & strAr(1)
End If
' Supprime les "-", récupère les 6 derniers caractères de la MAC et ajoute "HP-"
strFinal = Replace(strOut,"-","")
strFinal = Right(strFinal, Len(strFinal) -35)
strFinal = "HPC-" & strFinal
tu te choppes un caractère de fin de chaîne que WScript.Echo arrive quand même à afficher...
Essaie voir de faire, à la fin de ton code:
msgbox "La taille de la string """ & strFinal & """ est: " & len(strFinal)
Normallement, il doit te marquer que la taille vaut 10. Sinon, le problème vient sûrement de là !!
Sinon, tu peux à tout hazard, tu peux essayer de protéger la sortie lors de l'appel de ta fonction, c'est ta dire la ligne:
exeCmd = "c:\NewSid\newsid.exe -a """ & strFinal & """"
MisterWhiteLapin
Messages postés19Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention28 juillet 2008 4 juil. 2008 à 16:31
Le caractère "fantôme" est sûrement le célèbre "\r\n" de Windows, c'est le caractère de fin de ligne classique (sur un système Unix, la fin de ligne c'est un simple "\n").