8
votes

Comment attendre qu'un processus complète à l'aide de TCL-Attendez-vous

J'écris un script à l'aide d'attendu dans lequel je dois rlogin à certains hôtes et après cela, j'ai besoin d'envoyer des commandes. Maintenant, je veux revenir à cet hôte et Relogin à nouveau à un autre hôte et envoyez des commandes. Mais la course de mon script n'attend pas pour le premier hôte pour compléter ses travaux et sortir à la place, il envoie d'autres commandes entre le processus précédent. Comment puis-je atteindre cet effet en utilisant Attendez-vous s'il vous plaît guide?

exemple de code est comme suit: xxx


0 commentaires

4 Réponses :


11
votes

Vous oubliez de "toucher entré". Après l'envoi de sortie, le moyen d'attendre le processus de fin d'OS attendre EOF : xxx


3 commentaires

C'est déjà là dans mon code, j'ai oublié de le mentionner ici dans mon code


Qu'est-ce qu'il y a déjà? Le EOF ou le \ r ? Veuillez mettre à jour votre question pour être plus précis.


Attendez-vous également à EOF ne fonctionne pas. Souvenir Script envoie le reste des commandes entre le processus précédent.



0
votes

Pouvez-vous élaborer sur "SCRIMT STOCT ENVOYER DE REPOS DES COMMANDES ENTRE LE PROCESSUS précédent"

J'ai essayé cela et cela a fonctionné. P>

spawn ssh host1
expect ":"
send pwd1
expect "%"
send "echo hi\r"
expect "%"
send "exit\r"
expect eof
spawn ssh host2    
expect ":"
send pwd2


0 commentaires

1
votes

Essayez cette construction lorsque Commande Est-ce que le temps prend du temps: xxx

sur Timeout Vous attendez continuellement avec exp_continue < / code> commande pour % invite% .


0 commentaires

5
votes

J'ai trouvé ce post après avoir couru dans un problème de condition de course: Parfois, le script est terminé comme attendu et d'autres fois ce n'est pas. Ajout d'une déclaration sur le script assurait le résultat souhaité à chaque fois: xxx


1 commentaires

Attrapez «quelques dernières lignes», a retiré avec succès une condition de course pour moi. La sortie de l'attente est maintenant toujours complète. Au lieu de parfois parfois.