[..] Pb d'utilisation runas et @ComSpec

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpn34
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 31 janv. 2011 12:25
Status : Hors ligne

[..] Pb d'utilisation runas et @ComSpec

#1

Message par jpn34 »

Salut tout le monde,
Voici mon contexte :
Je dirige un parc avec des machines sous XP et Windows 7 64bits. Aucun utilisateur n'est admin de son poste.

voici mon besoin :wink: : je dois leur mettre un petit exe sur le bureau qui reconfigurera à la volée, leur ip, leur passerelle et leur DNS.

J'ai cru que j'avais réussi à tout trouver toutes mes réponses sur votre site magique mais décidément, lorsque j'applique les commandes avec celles du DOS, cela ne fonctionne malheureusement pas !
j'ai testé chaque tâches individuellement pour trouver la faille :

Quand je lance l'invite de commande (en mode admin sinon la commande sera refusée), puis la commande netsh et le reste, tout se passe bien (pour info, entre xp et 7, il faut pas oublier de changer ip en ipv4) dans la commande netsh.

Exemple en version xp, je tape :
netsh interface ip set address "Connexion au réseau local" static 10.33.19.91 255.255.255.0 10.33.19.251 1
Cela fonctionne nickel. :D

Pour info : certains ont rencontré des pb avec l'accent de "réseau" lorsqu'il est "scripté", je le contourne donc en remplaçant "é" de mon clavier par "alt+130". Selon l'éditeur, cela me met "é" ou ",".

Dans un premier temps j'avais mis la commande runas et @comspec dans le même exe mais visiblement cela ne peut fonctionner ?
donc j'ai dissocié en 2 fichiers.
un exe qui lance la commande runas puis un exe qui execute @comspec. cela ne marche pas non plus.. :? .

1er fichier

Code : Tout sélectionner

RunAsWait("login","domaine","mdp",0,"fichier2.exe",@SystemDir)

Le fichier2.exe qui est situé dans c:\windows\system32 (j'ai bien sur essayé sous c:\)

Code : Tout sélectionner

$Cx="Connexion au réseau local"
    $ip ='10.33.19.91'
    $gateway='10.33.19.250'
    $DNS1='194.2.0.50 primary'
    $DNS2='80.10.246.129 secondary'
    $subnet='255.255.255.0'

; static pour l'IP du PC.
RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set address' & '"' & $Cx & '"' & ' static ' & $ip & ' ' & $subnet & ' ' & $gateway & ' 1' & '', "", @SW_HIDE)

; static pour les DNS du PC.
RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set dnsservers' & '"' & $Cx & '"' & ' static ' & $DNS1, "", @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set dnsservers' & '"' & $Cx & '"' & ' static ' & $DNS2, "", @SW_HIDE)

Où sont les erreurs ? l'un et l'autre lancés individuellement ne fonctionne pas d'ailleurs.

j'ai essayé en mettant directement les infos sans passer par des variables, mais je ne sais pas sûr de bien gérer les "" et les accents finalement.
Par le passé j'utilisais runasset, mais depuis la nouvelle version, il n'existe plus.

Merci pour votre aide

JP
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#2

Message par zeshrek »

Plusieurs choses.
- Plutot que faire 2 scripts, j'en aurai fait qu'un seul avec des RunAsWait pour chaque ligne.
- Tu rajoute Primary & Secondary a la suite de tes DNS, mais on peut se contenter de l'adresse, apres on gere les N° index tout seul
- Sur chaque ligne j'aurai mis les étiquettes et pas juste les valeurs
- A la fin de la première ligne apres le gateway tu rajoutes un 1. A quoi sert il ?

bref, j'aurai tenté ceci :

Code : Tout sélectionner

$Cx="Connexion au réseau local"
    $ip ='10.33.19.91'
    $gateway='10.33.19.250'
    $DNS1='194.2.0.50'
    $DNS2='80.10.246.129'
    $subnet='255.255.255.0'

$Domain = "Nom du Domaine"
$Login = "Identifiant administrateur domaine"
$Pass = "Password du compte admin"


; static pour l'IP du PC.
;~ RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set address' & '"' & $Cx & '"' & ' static ' & $ip & ' ' & $subnet & ' ' & $gateway & ' 1' & '', "", @SW_HIDE)
RunAsWait($Login,$Domain,$Pass,0, @ComSpec & ' /c netsh interface ipv4 set address name=' & '"' & $Cx & '"' & ' source=static address=' & $ip & ' mask=' & $subnet & ' gateway=' & $gateway ,@SystemDir,@SW_HIDE)

; static pour les DNS du PC.
;~ RunWait(@ComSpec & ' /c netsh interface ipv4 set dnsservers' & '"' & $Cx & '"' & ' static ' & $DNS1, "", @SW_HIDE)
RunAsWait($Login,$Domain,$Pass,0, @ComSpec & ' /c netsh interface ipv4 set dnsservers name=' & '"' & $Cx & '"' & ' adress=' & $DNS1& ' index=1', @SystemDir, @SW_HIDE)
;~ RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set dnsservers' & '"' & $Cx & '"' & ' static ' & $DNS2, "", @SW_HIDE)
RunAsWait($Login,$Domain,$Pass,0, @ComSpec & ' /c netsh interface ipv4 set dnsservers name=' & '"' & $Cx & '"' & ' adress=' & $DNS2& ' index=2', @SystemDir, @SW_HIDE)
 
(j'espere juste pas avoir fait de boulette, peso je prefere gérer les guillemets dans les chaines avec ces chr(34) plutot qu'avec des simple/double quote...)
Si vis pacem para bellum
jpn34
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 31 janv. 2011 12:25
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#3

Message par jpn34 »

merci,
je tente ça et je vous tiens au jus.

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

Re: [..] Pb d'utilisation runas et @ComSpec

#4

Message par GaRydelaMer »

Bonjour et bienvenue

moi je mets ca sur plusieurs lignes ca embrouille moins à mon sens:

Code : Tout sélectionner

RunAsWait($Login, $Domain, $Pass, 0, @ComSpec & _
        ' /c netsh interface ipv4 set dnsservers name=' & _
        '"' & $Cx & '"' & _
        ' adress=' & $DNS2 & _
        ' index=2' _
        , @SystemDir, @SW_HIDE)
 
c'est plus facile pour "décoder" les suites de ', ".

Pour tes soucis avec les <> OS regarde du coté de: @OSType, @OSVersion, @OSArch et consort. Avec un Switch Case qui va bien tu gère la chaine à envoyer à la commande RunAsWait().

Dernier point, regarde aussi: #RequireAdmin et IsAdmin() pour être sur d'être admin et éventuélement afficher un MsgBox avant de quitter le programme.
jpn34
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 31 janv. 2011 12:25
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#5

Message par jpn34 »

j'ai adapté ce script à mes données : adresses, domaine, login et mdp.
Il n'y a pas d'erreur de syntaxe mais il ne se passe rien. :D sous mon Windows 7.
Y-a-t-il possibilité d'exécution pas à pas avec un système plus parlant, on pourrais détecter un peu plus la cause ?
sinon mon domaine comporte un "-", mais je ne vois plus là...

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

Re: [..] Pb d'utilisation runas et @ComSpec

#6

Message par GaRydelaMer »

Il y a bien un AutoItDebug, vu sur le Forum Anglais qui fait le Pas à pas, mais avec bcp d'include dans de gros projet j'ai pas trouver l'utilité.

Moi j'ai une UDF maison pour débugger en affichant des messages dans la consoles ainsi que la valeur de variables, Objet, Tableau, Texte.
jpn34
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 31 janv. 2011 12:25
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#7

Message par jpn34 »

Je viens de tester sous Windows XP, c'est exactement pareil
vous avez déjà rencontré ce genre de pb vous aussi ?
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#8

Message par FernandG »

Bonsoir,

Sous Windows 7 essayez le code suivant, après avoir modifié les variables :

Code : Tout sélectionner

#RequireAdmin

$name = "Connexion au réseau local"
$ip = "192.168.0.2"
$gw = "192.168.0.1"
$dns1 = "192.168.0.1"
$dns2 = "8.8.8.8"
$mask = "255.255.255.0"

RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set address "' & $name & '" static ' & $ip & ' ' & $mask & ' ' & $gw & ' 1', @SystemDir, @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set dnsservers "' & $name & '" static ' & $dns1, @SystemDir, @SW_HIDE)
RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 add dnsservers "' & $name & '" ' & $dns2 & ' index=2', @SystemDir, @SW_HIDE)
Bonne nuit.
jpn34
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 31 janv. 2011 12:25
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#9

Message par jpn34 »

:(
J'ai testé cela aussi (RequireAdmin).
Le système me demande bien de m'authentifier, donc je m'exécute mais après il ne se passe strictement rien de visible (juste une fraction de seconde une fenêtre noir (parce que j'ai mis @SW_MAXIMIZE à la place de @SW_HIDE je suppose).

Est-ce que quelqu'un a déjà essayé avec succès sous windows 7 ou autre système la combinaison :
-> RunWait(@ComSpec & ' /c ' & 'netsh interface ipv4 set address "'...
ou
-> RunAsWait($Login,$Domain,$Pass,0, @ComSpec & ' /c netsh interface ipv4 set address name=' ....

Est-ce que vous voyez une fenêtre, ou votre icône réseau ce manifester lors du changement d'IP, de passerelle, ect...ou l'annonce de la perte du lien internet qui confirme que l'action a bien été réalisée ?
Avez-vous vérifié avec un ipconfig que tous les changements était validé ?

Si j'exécute la commande manuellement cela marche...
Mais avec les scripts, c'est comme si cela était bloqué quelque part ! :?:
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#10

Message par FernandG »

Bonjour,
jpn34 a écrit :Est-ce que quelqu'un a déjà essayé avec succès sous windows 7
Justement, le code que je vous ai fourni est tout à fait fonctionnel sous mon Windows 7. Je l'ai testé avant de vous "l'envoyer". Après lecture de votre message, j'ai fais un autre test dans une VM, toujours sous Windows 7, et cela fonctionne aussi. J'étais sous une session administrateur.

#RequireAdmin car netsh à besoin de privilèges plus élevés, même en administrateur, mais bon je ne vous apprends rien à ce sujet.

Je referai des tests ce soir.

Bonne journée.
AutoItement.
jpn34
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 31 janv. 2011 12:25
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#11

Message par jpn34 »

:?
Merci, en voyant votre mail, je me suis dit que ce n'était pas possible !!!!!
Du coup, J'ai enfin compris mon erreur : lorsque j'exécutais avec un simple "go", il ne se passait rien après l'identification, mais dés que je l'ai enfin compilé en "exe", alors là, tout a fonctionné ! :mrgreen:

Bon cette étape fonctionne, maintenant ma problématique reste la même, les simples utilisateurs doivent exécuter , en l'absence d'un admin, cette commande d'où "runaswait".
si vous avez aussi essayé la combinaison runaswait (@comspec netsh.... et quelle marche !
Là, j'ai beau compiler, je n'ai malheureusement pas le même succès.

et merci encore pour votre patience....
JP
Avatar du membre
FernandG
Membre émérite
Membre émérite
Messages : 194
Enregistré le : mar. 15 avr. 2008 21:50
Localisation : Picardie
Status : Hors ligne

Re: [..] Pb d'utilisation runas et @ComSpec

#12

Message par FernandG »

Bonsoir,
jpn34 a écrit :lorsque j'exécutais avec un simple "go", il ne se passait rien après l'identification, mais dés que je l'ai enfin compilé en "exe", alors là, tout a fonctionné !
Etrange, pas besoin de compiler pour que cela fonctionne ... !?!
jpn34 a écrit :maintenant ma problématique reste la même, les simples utilisateurs doivent exécuter , en l'absence d'un admin, cette commande d'où "runaswait"
Le RunAsWait ne changera en rien votre problèmatique, elle restera la même.

N'aviez-vous pas besoin d'une élévation de privilège alors que vous étiez "Administrateur" ? Le lancement en RunAsWait aura exactement le même effet.

Une solution, à éviter si vous n'êtes pas membre d'un domaine, est de désactiver l'UAC.

Sinon voici quelques liens :
Tweak UAC
AutoStart Admin
RunDOS Netsh Vista

Bonne soirée.
AutoItement.
Répondre