Renommer le hostname d'une machine sous XP (sans être sur un domaine)

Résolu
nit0o Messages postés 4 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 4 juillet 2008 - 4 juil. 2008 à 10:15
MisterWhiteLapin Messages postés 19 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 28 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

Dim exeCmd
exeCmd = "c:\NewSid\newsid.exe -a" & " " & strFinal
WScript.Echo exeCmd

Set objApp = CreateObject("WScript.Shell")
objApp.run exeCmd

End If
'End of Script

8 réponses

MisterWhiteLapin Messages postés 19 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 28 juillet 2008
4 juil. 2008 à 14:54
Bonjour,

Ok, je viens de tester chez moi et j'obtiens 12 comme taille. Donc il y a un problème...

essaie avec la ligne:

strFinal = left(Right(strFinal, Len(strFinal) -35), 6)

à la place de la ligne:

strFinal = Right(strFinal, Len(strFinal) -35)

et tiens moi au courant (chez moi ça a l'air de marcher)...

Cordialement,

--
Mister White Lapin
3
nit0o Messages postés 4 Date d'inscription vendredi 15 décembre 2000 Statut Membre Derniè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..
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juil. 2008 à 10:32
thème topic : déplacé de VB.NET vers VBS
0
MisterWhiteLapin Messages postés 19 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 28 juillet 2008
4 juil. 2008 à 12:26
Bonjour,

Déjà, tu peux remplacer ta ligne

exeCmd = "c:\NewSid\newsid.exe -a" & " " & strFinal

par

exeCmd = "c:\NewSid\newsid.exe -a " & strFinal

mais ce n'est qu'un détail.

Quand tu lance ta console (bouton windiws + executer + cmd) et que tu lances ton script:

cscript nomDuScript.vbs, tu obtiens quoi à l'ecran?

Cordialement,

--
Mister White Lapin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nit0o Messages postés 4 Date d'inscription vendredi 15 décembre 2000 Statut Membre Derniè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..

Merci pour ton aide.
0
MisterWhiteLapin Messages postés 19 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 28 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 & """"

au lieu de la ligne:

exeCmd = "c:\NewSid\newsid.exe -a" & " " & strFinal

Cordialement,

--
MisterWhiteLapin
0
nit0o Messages postés 4 Date d'inscription vendredi 15 décembre 2000 Statut Membre Dernière intervention 4 juillet 2008
4 juil. 2008 à 16:23
Merci beaucoup mister !

Ca marche nickel, effectivement il prenait un caractère "fantôme".. Par contre s'agit-il d'un bug ou une erreur de ma part ?

A+ et bonne fin de journée.
0
MisterWhiteLapin Messages postés 19 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 28 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").

--
Mister White Lapin
0
Rejoignez-nous