Page 1 sur 1

[R] Comspec, La ligne entrée est trop longue

Posté : dim. 29 nov. 2009 19:01
par xeno
quand je lance cette commande,

Code : Tout sélectionner

Run(@ComSpec & ' /k ' &'"'&'"C:\Program Files (x86)\OpenVPN\bin\openvpn.exe"' &' --log test.log' &' --client' &' --dev tun' &' --remote 188.16.238.25' &' --port 1194' &' --resolv-retry infinite' &' --nobind' &' --persist-key' &' --persist-tun' &' --ca ca.crt' &' --key xeno.key' &' --cert xeno.crt' &' --redirect-gateway' &' --dhcp-option DNS 200.20.41.205' &' --dhcp-option DNS 200.47.22.122' &' --comp-lzo' &' --tun-mtu 1500' &' --fragment max' &' --mssfix' &' --verb 5', "", @SW_SHOW)
j'ai une erreur "la ligne entrée est trop longue" et pourtant j'ai essayé de le morcelé..

cette commande fonctionne très bien dans un batch
"C:\Program Files (x86)\OpenVPN\bin\openvpn.exe" --log test.log --client --dev tun --remote 188.16.238.25 --port 1194 --resolv-retry infinite --nobind --persist-key --persist-tun --ca ca.crt --key xeno.key --cert xeno.crt --redirect-gateway --dhcp-option DNS 200.20.41.205 --dhcp-option DNS 200.47.22.122 --comp-lzo --tun-mtu 1500 --fragment max --mssfix --verb 5
je pense que j'ai atteins une des limites d'autoit :(

utilisé un fichier batch externe ne me plais pas, je voulais tout intégre dans un seul exécutable, quelqu'un aurait il une idée ou une astuce :?:

Re: [..] Comspec, La ligne entrée est trop longue

Posté : dim. 29 nov. 2009 19:44
par ayuckers
Bonsoir,

Je tient a preciser que je n'est pas encore eut l'ocation d'experimenter ce genre de methode :)
Mais voici je qui me vient a l'espris :

Pourquoi ne pas utiliser ton fichier batch et masquer l'execution avec @SW_HIDE ?
Et pour l'integration de ton batch a l'exe d'autoit tu pourrais experimenter ce tuto réaliser par Tlem :
http://www.autoitscript.fr/forum/viewto ... pper#p3093
certe c'est peut être un peu complexe mais y'a de l'idée ;)

Ou bien pour faire plus simple tu pourrais tout simplement utiliser un " FileInstall " et lancer ton fichier batch...

Ou bien encore ton script pourrais crée directement le fichier batch que tu execute ensuite en mode caché et enfin tu suprime ton fichier batch

La je suis a cour d'idée mais je peut en trouvé d'autre si tu veut :lol:

Re: [..] Comspec, La ligne entrée est trop longue

Posté : dim. 29 nov. 2009 21:34
par Tlem
Est-ce que ceci ne fonctionnerait pas mieux :

Code : Tout sélectionner

$OpenDir = 'C:\Program Files (x86)\OpenVPN\bin\'
Run(@ComSpec & ' /k "' & $OpenDir & 'openvpn.exe" --log test.log --client --dev tun --remote 188.16.238.25 --port 1194 --resolv-retry infinite --nobind --persist-key --persist-tun --ca ca.crt --key xeno.key --cert xeno.crt --redirect-gateway --dhcp-option DNS 200.20.41.205 --dhcp-option DNS 200.47.22.122 --comp-lzo --tun-mtu 1500 --fragment max --mssfix --verb 5', $OpenDir, @SW_SHOW)

Re: [..] Comspec, La ligne entrée est trop longue

Posté : lun. 30 nov. 2009 00:20
par xeno
ah bah, c'étais presque ça :wink:

en supprimant le $opendir de la fin cela fonctionne.

Code : Tout sélectionner

$OpenDir = 'C:\Program Files (x86)\OpenVPN\bin\'
Run(@ComSpec & ' /k "' & $OpenDir & 'openvpn.exe" --log test.log --client --dev tun --remote 188.16.238.25 --port 1194 --resolv-retry infinite --nobind --persist-key --persist-tun --ca ca.crt --key xeno.key --cert xeno.crt --redirect-gateway --dhcp-option DNS 200.20.41.205 --dhcp-option DNS 200.47.22.122 --comp-lzo --tun-mtu 1500 --fragment max --mssfix --verb 5', "", @SW_SHOW)
j'ai pas pensée a essayé comme ça pourtant ma première version ressemblait a ceci a part que je mettais directement

Code : Tout sélectionner

C:\Program Files (x86)\OpenVPN\bin\openvpn.exe
a la place de $opendir, pour voir si cela étais possible, c'est après que j'ai essayé en morcelant, mais sans plus de succès..

bon et bien je vais essayer dans ce sens, car ma ligne de commande n'est pas tout a fait complète, il faut que j'y intègre les chemins des certificat et clés et de de openvpn qui n'auront pas des chemins fixe, pour obtenir ce que je désire...

Merci

Re: [..] Comspec, La ligne entrée est trop longue

Posté : lun. 30 nov. 2009 13:05
par ani
Rappel,la commande run fonctionne de la manière suivante
Premier paramètre : Nom du fichier a executer (exe,bat,com;pif)
Second paramètre : le dossier d'execution (En option)
Troisième paramètre : Mode d'affichage (En option)
Quatrième paramètre : Flux du processus entrée/sortie (En option)

En option := Pas obligatoire

Pour votre exemple:
On peut soit utiliser les 3 paramétre en indiquant (nom2lexe,SonDossier,Modedaffichage)
Nom2lexe = openvpn.exe
Sondossier = $opendir
modedaffichage = pas besoin d'explication ;)

Code : Tout sélectionner

$OpenDir = 'C:\Program Files (x86)\OpenVPN\bin\'
Run(@ComSpec & ' /k openvpn.exe --log test.log --client --dev tun --remote 188.16.238.25 --port 1194 --resolv-retry infinite --nobind --persist-key --persist-tun --ca ca.crt --key xeno.key --cert xeno.crt --redirect-gateway --dhcp-option DNS 200.20.41.205 --dhcp-option DNS 200.47.22.122 --comp-lzo --tun-mtu 1500 --fragment max --mssfix --verb 5', $OpenDir, @SW_SHOW)

OU bien utiliser que 2 paramètre en indiquant (Dossier+exe,"",Modedaffichage)
Dossier+exe = lien relatif = $opendir & "openvpn.exe"

voilàvoilà

Re: [..] Comspec, La ligne entrée est trop longue

Posté : lun. 30 nov. 2009 21:26
par xeno
Bon c'est chaud quand même à faire, mais j'ai le résultat voulu

grosso modo la commande finale ressemble à ceci, car j'utilise un inputbox avec FileOpenDialog pour renseigner les chemin.

Code : Tout sélectionner

 
 $ca = 'C:\Program Files (x86)\OpenVPN\config\ca.crt'
 $key = 'C:\Program Files (x86)\OpenVPN\config\xeno.key'
 $cert = 'C:\Program Files (x86)\OpenVPN\config\xeno.crt'
 $OpenDir = 'C:\Program Files (x86)\OpenVPN\bin\'


Run(@ComSpec & ' /k "' &'"' & $OpenDir & 'openvpn.exe" --log test.log --client --dev tun --proto tcp-client --remote 148.154.138.25 --port 443 --resolv-retry infinite --nobind --persist-key --persist-tun --ca ' &'"' & $ca &'"' & ' --key ' &'"' & $key &'"' &' --cert ' &'"' & $cert &'"' &' --redirect-gateway --dhcp-option DNS 105.21.142.205 --dhcp-option DNS 128.167.22.42 --comp-lzo --route-method exe --route-delay 2 --verb 5' &'"',"", @SW_SHOW)
 
bon maintenant il faut que je regarde comment envoyer "F4" pour fermer cette fenêtre sans la faire apparaitre.

Merci, à dans un prochain sujet :mrgreen:

Re: [R] Comspec, La ligne entrée est trop longue

Posté : mar. 01 déc. 2009 07:08
par ani
Pour rendre la fenêtre dos invisible remplacer @sw_show par @sw_hide
N'oubliez pas cette macro @ProgramFilesDir qui retournera dans votre cas C:\Program Files (x86)

Est-ce que l'une des solutions fonctionne ?

Code : Tout sélectionner

Dim $VPN_Dir,$VPN_EXE,$ca,$key,$cert
$VPN_Dir = "C:\Program Files (x86)\OpenVPN"
$VPN_Exe = "bin\openvpn.exe"
$ca = "config\ca.crt"
$key = "config\xeno.key"
$cert = "config\xeno.crt"

;Couper fonction
Run(@ComSpec & ' /c "' & $VPN_EXE & '" --log test.log --client --dev tun --proto tcp-client --remote 148.154.138.25 --port 443 --resolv-retry infinite --nobind --persist-key --persist-tun --ca "' & $ca & '" --key "' & $key & '" --cert "' & $cert &'" --redirect-gateway --dhcp-option DNS 105.21.142.205 --dhcp-option DNS 128.167.22.42 --comp-lzo --route-method exe --route-delay 2 --verb 5',$VPN_Dir,@SW_HIDE)
;Fin de coupe
 
Exit
Remplacer la fonction run par celle-ci

Code : Tout sélectionner

Run('"' & $VPN_EXE & '" --log test.log --client --dev tun --proto tcp-client --remote 148.154.138.25 --port 443 --resolv-retry infinite --nobind --persist-key --persist-tun --ca "' & $ca & '" --key "' & $key & '" --cert "' & $cert &'" --redirect-gateway --dhcp-option DNS 105.21.142.205 --dhcp-option DNS 128.167.22.42 --comp-lzo --route-method exe --route-delay 2 --verb 5',$VPN_Dir,@SW_HIDE)
Remplacer la fonction run par celle-ci

Code : Tout sélectionner

Run($VPN_EXE & ' --log test.log --client --dev tun --proto tcp-client --remote 148.154.138.25 --port 443 --resolv-retry infinite --nobind --persist-key --persist-tun --ca "' & $ca & '" --key "' & $key & '" --cert "' & $cert &'" --redirect-gateway --dhcp-option DNS 105.21.142.205 --dhcp-option DNS 128.167.22.42 --comp-lzo --route-method exe --route-delay 2 --verb 5',$VPN_Dir,@SW_HIDE)
Remplacer la fonction run par celle-ci

Code : Tout sélectionner

ShellExecute($VPN_Exe,'" --log test.log --client --dev tun --proto tcp-client --remote 148.154.138.25 --port 443 --resolv-retry infinite --nobind --persist-key --persist-tun --ca "' & $ca & '" --key "' & $key & '" --cert "' & $cert & '" --redirect-gateway --dhcp-option DNS 105.21.142.205 --dhcp-option DNS 128.167.22.42 --comp-lzo --route-method exe --route-delay 2 --verb 5',$VPN_Dir,"",@SW_HIDE)

Voilàvoilà

Re: [R] Comspec, La ligne entrée est trop longue

Posté : mar. 01 déc. 2009 08:49
par Habibsbib
Je n'ai pas compris ani : moi quand je fais un run, si je mets par exemple :

Code : Tout sélectionner

Run ("E:\AutoIt3\SciTE\SciTE.exe")
Ben ça marche très bien ! Et je n'ai pas eu besoin de préciser le dossier dans workingdir :? j'ai pas tout compris...

Re: [R] Comspec, La ligne entrée est trop longue

Posté : mar. 01 déc. 2009 14:36
par ani
>Salut, çà fonctionne aussi de cette manière.
Le workingdir comme son nom l'indique c'est le dossier de travail.
-Teste ceux-ci

Code : Tout sélectionner

run(@compSpec & " /c scite.exe","E:\AutoIt3\SciTE",@sw_hide)
exit

Code : Tout sélectionner

Shellexecute("scite.exe","","E:\AutoIt3\SciTE")
exit
Le shellexecute est bien mieux ;)

Re: [R] Comspec, La ligne entrée est trop longue

Posté : mar. 01 déc. 2009 15:38
par Habibsbib
D'accord, j'ai compris. Merci.