[R] Trouver l'erreur ^^

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
sanegone
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 22 nov. 2007 10:55
Status : Hors ligne

[R] Trouver l'erreur ^^

#1

Message par sanegone »

Bonjour à tous voilà, dans le cadre d'une mise en DHCP de masse, j'ai voulut utiliser autoit afin de créer un exe qui passe directement la machine du statique au DHCP évitant de se loger en admininstrateur manuellement sur 117 machines l'une après l'autre : / Le problème est que je ne trouve pas pourquoi mon code ne marche, il se lance ne met pas d'erreur mais ne fait rien les machines restent en statique. Voilà si quelqu'un peut m'aider. Merci d'avance.


;RunWait(@ComSpec & " /c " & "commandName")

runasset("administrateur", @ComputerName, "******")
;lance le script en tant que administrateur, avec le mot de passe ****** sur la machine locale

Code : Tout sélectionner

Run(@ComSpec & " /c " & "netsh") 
; lance la macro @ComSpec, /c autorise l'utilisation de la commande netsh en dos. 
sleep (50) 
; le programme attent 50 millisecondes 

send("interface ip set address ") 
send("{asc 034}") 
send("connexion au réseau local") 
send("{asc 034}") 
send("source=dhcp") 
sleep (200) 

send("interface ip set dns") 
send("{asc 034}") 
send("connexion au réseau local") 
send("{asc 034}") 
send("source=dhcp") 

send("{ENTER}") 

runasset() 


sleep (10000) 

winkill("C:\WINDOWS\system32\cmd.exe")
Modifié en dernier par sanegone le jeu. 22 nov. 2007 15:10, modifié 2 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#2

Message par ani »

Je ne suis pas expert en la matière, regarde le 4iem paramétre pour run (stderrRead,stdinWrite,stdOutRead.


la ligne de cmd send (10 ligne) c'est sur une seul ligne avant de faire enter ?


le probleme etant celui-ci les envoi de send se fait sur la fenetre active, si ta fenetre dos n'est pas au premier plan , les send ne sont pas envoyé vers celui-ci.

essaye plutot de mettre tous sur une meme ligne comme ci dessous

Code : Tout sélectionner

Run(@ComSpec & " /c " & "netsh ") 
; lance la macro @ComSpec, /c autorise l'utilisation de la commande netsh en dos. 
sleep (50) 
; le programme attent 50 millisecondes 
send('interface ip set address "connexion au réseau local" source=dhcp') 
.... 
......
Modifié en dernier par ani le jeu. 22 nov. 2007 11:54, modifié 1 fois.
sanegone
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 22 nov. 2007 10:55
Status : Hors ligne

#3

Message par sanegone »

la ligne de cmd send (10 ligne) c'est sur une seul ligne avant de faire enter ?


Et bien je pense que oui après je ne suis pas expert en la matière non plus et mes codes sont bien souvent du bricolage tant que mal, puis quelqu'un m'aide a corriger.
Je pense que essayer avant de demander de l'aide est un minimum ^^.

Pour ce qui est du premier plan je vais essayer ^^


EDIT : Je vais essayer :p meric beaucoup
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#4

Message par ani »

Y a aucun Séparateur dans cette double cmd (adress et dns )netsh ?

j'ai testé ceux-ci sous dos en ajoutant un séparateur mais je pense que c'est pas le bon, mais je débute donc merci pour l'eclaircisement

ligne du script sur une seul ligne
send('interface ip set address "connexion au réseau local" source=dhcp | interface ip set dns "connexion au réseau local" source=dhcp')
sortie dos
netsh>interface ip set address "connexion au réseau local" source=dhcp | interfa
ce ip set dns "connexion au réseau local" source=dhcp
Au moins deux arguments de cette commande ont le même nom.
Au moins deux arguments de cette commande ont le même nom.

netsh>
sanegone
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 22 nov. 2007 10:55
Status : Hors ligne

#5

Message par sanegone »

send('interface ip set address "connexion au réseau local" source=dhcp | interface ip set dns "connexion au réseau local" source=dhcp')
A tout hasard il ne manquerai pas des ' ' près du séprateur ?

Code : Tout sélectionner

send('interface ip set address "connexion au réseau local" source=dhcp'|'interface ip set dns "connexion au réseau local" source=dhcp')
Erreur autant pour moi. ^^


EDIT :
J'ai tenter de supprimer la répétition de "connexion au réseau local" le script s'execute a nouveau jusqu'au bout mais ne fait toujours rien pour autant : /
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#6

Message par ani »

je sais pas je débute dans le ms-dos je li le netsh

j'ai testé run(netsh) sa fonctionne, pas besoin du comspec /c
ensuite un send(" interface ip" & "{enter}")

mais je comprend pas ce que tu désire faire, la cmd sous dos c'est quoi exactement ? car dans l'exemple tu demande une configuration de deux element adress et dns, je vois aucun donnée dans les parametre d'ip ou autre ?

excuse si je te fait pas avancer :'(

script

Code : Tout sélectionner

Run("netsh") 
send(" interface ip " & "{enter}")
sleep (50) 
; le programme attent 50 millisecondes 
send('set address "connexion au réseau local" source=dhcp' & "{enter}" & 'set dns "connexion au réseau local" source=dhcp' & "{enter}")
sortie dos
netsh>interface ip
netsh interface ip>set address "connexion au réseau local" source=dhcp

Dhcp est déjà activé sur cette interface.

netsh interface ip>set dns "connexion au réseau local" source=dhcp
Ok.

enfin bon faudrai testé avec les parametre run ( std )
sanegone
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 22 nov. 2007 10:55
Status : Hors ligne

#7

Message par sanegone »

ben le code ca a était un peu comme les legos j'ai prit une caisse de codes, j'ai prit les bout qui m'interessait et j'ai essayer de faire tenir ensemble ^^ J'essaye de faire un exe qui changera automatiquement un pc en IP statique vers une ip en DHCP donnée par le serveur. En fait actuellement l'ip est rentré en manuel, il faudrai qu'elle se mette en automatique. Seulement j'ai plus de 100 machines a faire et me loger en admin sur chaqu'une d'elle pour modifier ca serai beaucoup trop long alors qu'un petit coup de AutoIt devrait regler le problème ^^. Bon merci pour ton aide, et rassure toi tu m'aide beaucoup :p Bon il se fait l'heure d'aller manger, j'aime mon travail mais pas autant que manger ^^ A tout à l'heure peut-être.

déjà la sortie DOS :
Dhcp est déjà activé sur cette interface.
Pour l'ip présage qu'on est plus très loin a mon avis, reste plus que les DNS en tout ca merci pour ton aide et bon appétit ^^.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#8

Message par ani »

Streams of child processes run with RunAsSet cannot be read from at this time.

pour rendre le code, le plus clair possible
j'ai indiqué la class car il me semble qu'on peut l'utiliser pour faire un envoi dans cette fenetre et non une autre, je teste mais il me sort rien de bon... excuse :(

Code : Tout sélectionner

; Les parametre pour le programme netsh
; variables
$cmd = "netsh" ; processus netsh.exe
$Class = "ConsoleWindowClass"
$InterfaceIP = " interface ip "
$SetDNS = "set dns "
$SetAdress = "set address "
$localDHCP = '"connexion au réseau local" source=dhcp'

; on démarre la cmd
$PID = Run($cmd)
; on fait un envoie pour arriver à netsh interface ip>
send($InterfaceIP & "{enter}")
; le programme attent 50 millisecondes
sleep (50)

send($SetAdress & $localDHCP & "{enter}" & $SetDNS & $localDHCP & "{enter}")

;j'ai mit un temp d'attente
Sleep(5000)

;on ferme la fenetre du processus
;ProcessClose($PID)
; ou bien, 
send("bye" & "{enter}")
la cmd send("bye" & "{enter}") est utlisé sous netsh pour quitter.

Merci et bonne appetit a toi aussi ;)


Edit : J'ai réussi (m'a fallu un peu de temp, les souvenir on refait surface ^^ )

on va attendre que tu post l'amélioration de ton code.
avant qu('on post une solution finale ;)
Merci a l'equipe de ne pas répondre :o

Y a toute les données dans les variables .
sanegone
Niveau 2
Niveau 2
Messages : 21
Enregistré le : jeu. 22 nov. 2007 10:55
Status : Hors ligne

#9

Message par sanegone »

voilà en mixant un peu tout je suis arriver a quelque chose qui marche ^^ :

Code : Tout sélectionner

runasset("Administrateur", @ComputerName, "******") 
Run("netsh") 
send(" interface ip " & "{enter}") 
sleep (50) 
send('set address "connexion au réseau local" source=dhcp' & "{enter}" & 'set dns "connexion au réseau local" source=dhcp' & "{enter}") 

send("bye" & "{enter}")
Merci beaucoup ani pour ton aide :D
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#10

Message par ani »

ok mais le probleme c'est, si ta une fenetre qui viend sintroduire au premier plan (ce qui peut arriver) les envoi ms-dos ne fonctionneront pas..


héhé la modif :) ta juste remplacé les variables par leur valeur :p

j'y ai indiqué la class=ConsoleWindowClass elle sert fortement.
sa permet d'envoyé a une fenetre dos only mais y a un probleme si on dispose d'autre fenetre dos ...probleme d'envoie....


fait un test met des sleep avant l'envoi de cmd et ouvre une deuxieme fenetre dos qui sera au premier plan


J'ai fait quelque test assez satisfaisant (faudra lire la documentation pour plus d'information sur les cmd autoit ), dans le script que te prépare, je vais essayé d'expliquer au mieux.


merci d'avance pour m'avoir fait replongé dedans ;)
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#11

Message par sylvanie »

STOOOPPPPPPP

netsh est avant tout un outil el ligne de commande, pas besoins de lancer du send , c'est des coups à ramasser ses dents.

voici les fameuse lignes de commande :

activation du DHCP :
netsh interface ip set address name="Connexion au réseau local" source=dhcp

réglage de la passerelle (pas demandé mais c'est toujours bon à savoir :
netsh interface ip set address name="Connexion au réseau local" gateway=192.168.2.1 gwmetric=0

réglage dns :
netsh interface ip set dns name="Connexion au réseau local" sou
rce=dhcp

construit toi ton script avec ces lignes de commande, puis fait les executer en remote avec par exple psexec ou l'outil de ton choix ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#12

Message par Tlem »

J'avais déjà fait un truc dans le genre en batch :

Code : Tout sélectionner

@ECHO OFF
ECHO Mise en place des valeurs DHCP.
ECHO.

ECHO Configuration de l'adresse IP, en DHCP :
netsh interface ip set address name="Connexion au r‚seau local" source=dhcp
ECHO Configuration des DNS en automatique :
netsh interface ip set dns name="Connexion au r‚seau local" source=dhcp

ECHO.
ECHO Configuration du reseau terninee.
PING -n 5 127.0.0.1>NUL
Le voici adapté à AutoIt, avec en prime le message qui va bien ;)
évidement il faut que le nom de la connexion réseau soit le bon.

Code : Tout sélectionner

; Nom de la connexion au réseau local.
$Cx = "Connexion au réseau local"

SplashTextOn("Configuration DHCP","Configuration DHCP en cours ...", 400, 50, -1, -1, 33, -1, 18)
Sleep(3000)

; DHCP pour l'IP du PC.
RunWait(@ComSpec & ' /c ' & 'netsh interface ip set address name=' & '"' & $Cx & '"' & ' source=dhcp', "", @SW_HIDE)
; DHCP pour les DNS du PC.
RunWait(@ComSpec & ' /c ' & 'netsh interface ip set dns name=' & '"' & $Cx & '"' & ' source=dhcp', "", @SW_HIDE)

SplashTextOn("Configuration DHCP","Configuration DHCP terminée.", 400, 50, -1, -1, 33, -1, 18)
Sleep(3000)
SplashOff()
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lordgotham
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 24 janv. 2008 17:56
Localisation : bordeaux
Status : Hors ligne

Re: [R] Trouver l'erreur ^^

#13

Message par lordgotham »

bonjour

désoler de ressortir un vieu message, mais j'ai approximativement le meme code et j'aimerai ne pas avoir a renseigner le nom de la carte réseau car il change souvent.

quelqu'un a t il une astuce pour cela?

mon script permet d'ajouter des dns pour des cartes en dhcp


cordialement
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [R] Trouver l'erreur ^^

#14

Message par GaRydelaMer »

Bonjour

tu dois surement trouver la liste dans la base de registre.

Reste plus cas trouver la klé. Une fois fait une liste déroulante pour sélectionner la bonne carte et tu a joute tes serveurs DNS.

Edit:
La klé en question et ses filles.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network

dans les filles tu recherches la valeur Name.
lordgotham
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 24 janv. 2008 17:56
Localisation : bordeaux
Status : Hors ligne

Re: [R] Trouver l'erreur ^^

#15

Message par lordgotham »

bonjour

l'idée est pas mal le probleme, sauf erreur de ma part c'est qu'il y en a plein de sous repertoire
et si je cherche name j'en trouve avec differents nom

connexion au réseau local
connexion au réseau local 1
connexion au réseau local 2
ect....
Serge63
Niveau 4
Niveau 4
Messages : 71
Enregistré le : lun. 22 juin 2009 14:54
Localisation : Clermont-ferrand
Status : Hors ligne

Re: [R] Trouver l'erreur ^^

#16

Message par Serge63 »

Bonjour

tu peux peut-etre t'inspirer de ce post http://www.autoitscript.fr/forum/viewto ... 38&p=13959
Répondre