Page 1 sur 1

[..] Attendre execution script unix

Posté : mer. 07 avr. 2010 11:24
par sacan
Bonjour,

Je viens de créer un code permettant de lancer un script unix via la console msdos en telenet :

Code : Tout sélectionner

Run("cmd.exe")
WinWaitActive("C:\WINNT\system32\cmd.exe")
Send("telnet serveur")
Send("{ENTER}")
Send("user")
Send("{ENTER}")
Sleep(2000)
Send("password")
Send("{ENTER}")
Sleep(2000)
Send("./script_unix.sh")
Send("{ENTER}")
Sleep(2000)
Send("exit")
Send("{ENTER}")
MsgBox(64, "Information", "Insertion effectué")
Ce que je souhaite c'est pouvoir attendre l'execution du script afin de pouvoir envoyer les commande d'exit.

Merci de votre aide.

Re: [..] Attendre execution script unix

Posté : mer. 07 avr. 2010 11:48
par peuchere83
Bonjour,

Tu pourrais faire en sorte que ton script unix créé un fichier texte lorsqu'il a fini son traitement.
Ainsi tu attends la présence de ce fichier avant de pouvoir continuer ton programme.

Voila pour l'idée, bon courage.

Re: [..] Attendre execution script unix

Posté : jeu. 08 avr. 2010 01:28
par jajar
Je ne sais pas si il existe une fonction pour ce genre de tache.

Mais peuchere83 à raison, tu fais une condition puis tu supprime le log.txt une fois exit terminé.

Re: [..] Attendre execution script unix

Posté : jeu. 08 avr. 2010 09:37
par GhostLine
C'est plus du coté du script Unix qu'il faut que tu regardes, je pense.

Quid de faire comme suit :

Send("./script_unix.sh&&exit")
Send("{ENTER}")

Ce qui doit faire s'exécuter les commandes les unes après les autres (voir ici).

Après, il faut tester pour vérifier si ça marche ou pas.

Sinon, il reste effectivement la solution de créer un petit fichier de sortie à la fin de ton script .sh et d'en contrôler la présence de manière périodique.

Re: [..] Attendre execution script unix

Posté : jeu. 08 avr. 2010 12:28
par jajar
oui, mais ce qu'il cherche c'est de le coder en autoit ce serait plus pratique et il y a moins de risque d'erreur...

si il existe certaines udf qui font attendre le navigateur ie ou firefox pour que le script ce termine correctement, ca doit exister pour d'autres applications.

Re: [..] Attendre execution script unix

Posté : jeu. 08 avr. 2010 17:35
par Tlem
Eventuellement, vous pourriez utiliser StdinWrite et StdoutRead pour recevoir et envoyer les ordres à la console. ;)
http://www.autoit.fr/autoit3/docs/funct ... nWrite.htm
http://www.autoit.fr/autoit3/docs/funct ... utRead.htm

Re: [..] Attendre execution script unix

Posté : jeu. 08 avr. 2010 20:46
par jajar
Faudrait coder une UDF pour ce type de problème, car c'est vrai que ca peut être utile.

Re: [..] Attendre execution script unix

Posté : ven. 09 avr. 2010 11:17
par sacan
Merci pour vos réponses.

Je vais y travailler la semaine prochaine car bcp de travail aujourd'hui.

Je vous tiens au courant.

Cordialement,

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 14:48
par sacan
Bonjour,

Je viens d'essayer la méthode de du && comme suggéré par GhostLine, mais ça ne fonctionne pas.

Je suis donc passé par une boucle qui attend la création du fichier.

Code : Tout sélectionner

Send("./script.sh")
Send("{ENTER}")
While 1
    If FileExists("terminer.txt") then ExitLoop
WEnd
Un point positif est que je vois le déroulement du script dans ma fenêtre, mais il ne veut pas sortir de la boucle.

Est-ce que ma syntaxe est correcte ?

Merci de votre aide

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 15:19
par Tlem

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 16:51
par sacan
J'ai lu pas mal de sujet sur ces fonctions mais elles ne pourra pa être utilisé dans mon service.

Est-ce que le while est correcte car je pense que le pb ce situe ici car le script se bloque au passage de la boucle.

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 17:25
par sacan
Je viens de faire des test.

Code : Tout sélectionner

If FileExists("/**/terminer.txt") then Send("rm terminer.txt") EndIf

Code : Tout sélectionner

while 1
If FileExists("/**/terminer.txt") Then
    MsgBox(64, "Information", "Fichier présent")
Else
    MsgBox(64, "Information", "Fichier pas présent")
EndIf
Sleep(2000)
WEnd
J'ai essayé les deux code précedent et il ne trouve pas le fichier. Est-ce que la fonction FileExists fonctionne bien sous unix ?

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 21:04
par Tlem
sacan a écrit :J'ai lu pas mal de sujet sur ces fonctions mais elles ne pourra pa être utilisé dans mon service
Ha !!! :shock:
Vous pouvez faire un script AutoIt, mais pas utiliser des fonctions internes à celui-ci. :shock:
Je comprend pas tout là ...
sacan a écrit :Est-ce que la fonction FileExists fonctionne bien sous unix ?
:lol: :lol: :lol: :lol:
AutoIt = Windows donc AutoIt <> Unix.
Si vous sous entendez dans Wine, alors précisez le ...

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 22:34
par GMib
Je croi qu'il parle du stdinwrite et stdinread qui déconne avec telnet, j'ai essayé de m'en servir et le process se ferme quand on lance le telnet.
j'ai peu être pas su le faire.

sinon une autre piste a explorer : utiliser un autre logiciel pour telnet : putty
il est utilisable en ligne de commande.
http://marc.terrier.free.fr/docputty/Ch ... ng-cmdline

Re: [..] Attendre execution script unix

Posté : lun. 12 avr. 2010 23:42
par Tlem
Et pourquoi ne pas utiliser les fonctions interne à AutoIt ?
► Afficher le texte
C'est un code écrit rapidement, il demande à être amélioré en fonction des besoins. Selon le type de données à récupérer je pense que cela devrait faire l'affaire.
*** Attention toutefois aux caractères renvoyés ? car en Telnet sur un Linux, certains ne sont pas standard pour Windows ...
Donc il faut interpréter. ;)
Mais d'après ce que sacan a écrit dans son premier message, AMHA cela devrait très largement suffire sans se prendre la tête ... :mrgreen:

Re: [..] Attendre execution script unix

Posté : mar. 13 avr. 2010 10:29
par sacan
Bonjour,

Merci pour votre script. Je viens de lancer en modifiant les variables pour que cela corresponde à mon besoin. Le problème c'est que rien ne se passe et rien n'apparait. Je suis sous win 2000, est-ce qu'il faut que je mettre à jour qq chose, car visiblement il n'y a aucune action en utilisant la commande TCPStartUp().

Cdlt,

Re: [..] Attendre execution script unix

Posté : mar. 13 avr. 2010 18:11
par Tlem
Quelle version de AutoIt utilisez-vous ?

Re: [..] Attendre execution script unix

Posté : mer. 14 avr. 2010 14:59
par sacan
La version v3.3.4.0.

Normalement ca devrait fonctionner...

Re: [..] Attendre execution script unix

Posté : mer. 14 avr. 2010 19:43
par Tlem
Je viens de tester le script sur un Windows 2000 Pro dans un machine virtuelle et tout fonctionne.
Sans doute vous manque t-il un paramètre (l'IP peut être) ?

Dans tous les cas le test du script est concluant sur un Windows 2000 avec AutoIt version 3.3.6.0.
A vous de voir d'où vient le problème.