[..] Détecter un script qui se termine

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

[..] Détecter un script qui se termine

#1

Message par shaq »

Bonjour,

Je dois détecter le moment où un script se termine. Soucis, ce script est exécuté sur une machine UNIX par telnet.

Comment pourrais-je détecter la fin de ce script pour passer à la suite ?

Merci.
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..]Détecter un script qui se termine

#2

Message par shaq »

Ce script est donc lancé en se connectant sur la machine en question par telnet (donc en ligne de commande windows), un indice serait peut-être de détecter le retour au prompt ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#3

Message par Tlem »

Regardez du coté de ConsoleRead dans l'aide de AutoIt.
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é".
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#4

Message par shaq »

Hum ... Je ne vois pas bien comment utiliser cette fonction.
Pour être plus précis, mon script AutoIt, ouvre une console, se connecte en telnet sur une machine UNIX, et lance un script en korn shell sur celle-ci, et moi je dois détecter quand celui ci se termine. Mais d'après ce que jai compris la fonction ConsoleRead lit l'entrée standard d'un script en autoit.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#5

Message par Tlem »

Autant pour moi (A 4h du mat je ne devais pas avoir les idées claire ;) ).

Il vous faut utiliser la commande Run en conjonction avec StdoutRead.
Regardez dans l'aide l'exemple fournit avec StdoutRead. ;)
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é".
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#6

Message par shaq »

Très bien merci je vais tester cette fonction aujourd'hui même.
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#7

Message par shaq »

Non ça ne fonctionne pas, ou du moins je n'y arrive pas.

Code : Tout sélectionner

Opt("SendKeyDelay", 20)
$Window = "Telnet machineunix"
Run("telnet machineunix")
Sleep(1000)
ControlSend($Window, "", "", "user{Enter}")
sleep(300)
ControlSend($Window, "", "", "password{Enter}")
sleep(1000)
ControlSend($Window, "", "", "scriptunix{Enter}") // le fameux script lancé sur la machine (celui dont je dois détecter l'arrêt)
sleep(2000)
Voila le code de mon script. Pour info quand le "scriptunix" se termine, il y a écrit "FIN DU SCRIPT" à la toute derière ligne.

J'ai essayé plusieur choses :

1)

Code : Tout sélectionner

Opt("SendKeyDelay", 20)
$Window = "Telnet machineunix"
$foo = Run("telnet machineunix", "", @SW_SHOW, $STDOUT_CHILD)
Sleep(1000)
ControlSend($Window, "", "", "user{Enter}")
sleep(300)
ControlSend($Window, "", "", "password{Enter}")
sleep(1000)
ControlSend($Window, "", "", "script{Enter}")
sleep(2000)
$line = StdoutRead($foo)
MsgBox(0, "Titre", $line)
Donc avec la méthode comme l'exemple, j'ai même essayé avec la boucle mais la boite de dialogue n'affiche rien.

J'ai essayé en récupérant le PID de la fenêtre CMD dans la variable $pid, et en utilisant $line = StdoutRead($pid), avec et sans la boucle, mais rien ne s'affiche non plus.

Comment dois-je m'y prendre ?

PS : Admettons que j'arrive à le faire fonctionner, je ne pourrais donc plus voir la fenêtre de ligne de commande en même temps ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#8

Message par Tlem »

Vous avez ici un magnifique exemple de gestion de la console avec AutoIt créé par notre ami Michel Claveau : http://www.autoitscript.fr/forum/viewto ... f=6&t=1385
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é".
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#9

Message par shaq »

Malheursement ça ne m'aide pas beaucoup, car c'est toujours la même histoire, ça ne m'affiche jamais rien. J'ai même essayé avec une boucle d'écrire dans un fichier mon "$line" avec un @CRLF concaténé à la fin, mais ça me fait un fichier avec seulement des retours à la ligne.

Donc si vous avez une idée ....
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#10

Message par Tlem »

Regardez ce message : http://www.autoitscript.com/forum/index ... ntry590023

Peut être vous apportera il de la lumière sur ce que vous voulez faire. ;)
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é".
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#11

Message par shaq »

Déjà pour commencer, essayer de faire quelque chose de plus simple, pour pouvoir interprêter le retour de la ligne de commande.

Je veux ouvrir une ligne de commande, faire un telnet mamachine, et attendre le retour de cette ligne : "Connexion :"

Quel code permettrait de faire celà ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#12

Message par Tlem »

J'ai adapté un exemple du forum Anglais à mon cas pour le tester et voici ce que ça donne :
► Afficher le texte
Évidement, ce code est à adapter à votre machine. En tout cas chez moi, la commande ps m'a bien retourné les processus en cours. :D
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é".
Avatar du membre
HeartKey
Niveau 3
Niveau 3
Messages : 39
Enregistré le : dim. 02 août 2009 06:27
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#13

Message par HeartKey »

Question bête mais....Avez-vous bien vérifier que le script sur la machine Unix renvoyait bien quelque chose ? Est t'il compiler ? Si oui , est t'il bien compiler en mode console ?
~~ Image ~~
~~ Image ~~
~~ Image ~~
shaq
Niveau 4
Niveau 4
Messages : 59
Enregistré le : dim. 29 juil. 2007 13:04
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#14

Message par shaq »

Bonjour,

Donc en fait j'ai réussi à faire ce que je voulais, j'ai utilisé la commande telnet -f pour pouvoir logger tout l'affichage dans un fichier, et dans une boucle je lis ligne par ligne le fichier jusqu'à ce que je tombe sur la ligne qui signifie la fin du script, et je quitte la boucle. J'avais peur que je ne puisse pas ouvrir et lire le fichier en même temps qu'il y ait des ajouts sur celui-ci, mais visiblement ça fonctionne (avec parfois un temps de latence entre la ligne de fin et la détection de celle ci).

Je vais ré-essayer avec la méthode du forum anglais pour voir ce que ça donne. J'avais déjà essayé aupréalable mais ça ne fonctionnait pas du tout, en fait le $ack affichait toujours une ligne avec seulement des caractères bizares.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détecter un script qui se termine

#15

Message par Tlem »

Je ne sais quoi vous dire, car le script que je vous ai proposé fonctionne parfaitement sur mon boîtier Synology dont l'OS est un mini Linux BusyBox.
J'ai moi aussi des caractère 'bizarres', mais il y à aussi dans les chaînes des éléments comme : DiskStation_207 login:, le prompte avec une ligne contenant la chaîne BusyBox...

Au début, j'ai eu du mal à le faire fonctionner, donc essayez de lancer le script par étape. Affichez une boite de dialogue après les lignes $ack = TCPRecv($sk, 150) pour en voir le contenu et adapter le script à vos besoins.
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é".
Répondre