deuxième “envoyer la commande” attendons à ce que le script n'est pas en attente pour terminer la Sortie de la première commande

J'ai un très petit script expect . Le flux est comme suit

  1. ssh à la machine à distance
  2. Exécuter une commande et après l'exécution de la commande, vous serez dans un autre prompt ( invite de nom est Enter cmd>.
  3. Sur le Enter cmd> invite, j'ai besoin d'exécuter de nombreuses commandes

J'ai donc conçu ce script

#!/usr/bin/expect

 set FULL_CMD { #cmd1 #cmd2 #cmd3  }
 puts "STARTING......."

 log_file myfile.log ;# <<< === append output to a file
 spawn ssh tempuser\@dummyserver
 match_max  100000000

 expect "password:"
 send "temppasswd\r"
expect  "*temp*"
 send "cd \/home\r"
 expect "*temp*"
send "new cmd prompt\r"
expect "Enter cmd>"

foreach tempcmd $FULL_CMD {
 send "${tempcmd} \r "
 expect -exact  "Enter cmd>\r"
 send -- "\r"
expect eof }

send "q"
send "exit\r"

puts "I HAVE ENDED......."

Mon problème: Fait l'O/P de la première commande cmd#1 est très long et je peux voir que le fait de s'attendre script n'est pas d'attente pour l'O/P de la première commande complète et envoie le deuxième commande cmd#2 après un certain temps.

Ce script fonctionne très bien sur les systèmes où l'O/P de cmd#1 est petit, mais sur les systèmes où l'O/P de cmd#1 est très grand (disons 1000000 lignes), il a du mal, à savoir les questions de la première commande cmd#1 et l'O/P suit, mais avant de revenir à Enter cmd> invite, le script questions de la deuxième commande cmd#2

Comment puis-je m'assurer que la commande cmd#2 est envoyée seulement après la sortie de cmd#1 complète?

InformationsquelleAutor user3387487 | 2014-03-06