[..] Détecter un script qui se termine
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Détecter un script qui se termine
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.
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.
Re: [..]Détecter un script qui se termine
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 ?
- Tlem
- 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
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é".
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é".
Re: [..] Détecter un script qui se termine
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.
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.
- Tlem
- 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
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.
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é".
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é".
Re: [..] Détecter un script qui se termine
Très bien merci je vais tester cette fonction aujourd'hui même.
Re: [..] Détecter un script qui se termine
Non ça ne fonctionne pas, ou du moins je n'y arrive pas.
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)
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 ?
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)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)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 ?
- Tlem
- 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
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é".
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é".
Re: [..] Détecter un script qui se termine
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 ....
Donc si vous avez une idée ....
- Tlem
- 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
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.
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é".
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é".
Re: [..] Détecter un script qui se termine
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à ?
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à ?
- Tlem
- 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
J'ai adapté un exemple du forum Anglais à mon cas pour le tester et voici ce que ça donne : Évidement, ce code est à adapter à votre machine. En tout cas chez moi, la commande ps m'a bien retourné les processus en cours. 
► Afficher le texte
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é".
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é".
Re: [..] Détecter un script qui se termine
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 ?
Re: [..] Détecter un script qui se termine
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.
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.
- Tlem
- 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
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.
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é".
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é".





