2016-10-04 2 views
0

Ich habe eine Aufgabe des Erstellens von Docker-Container und die Arbeit durch ihren Lebenszyklus. Zu automatisieren es ich bin mit Shell mit erwarten als Cloud Foundry cli ist interaktiv unter meinem Code:erwarte mit Shell für mehrere Taksks der Wolke Gießerei CLI

  #!/usr/bin/expect -f 
     spawn cf login -a <api url> 
     #set timeout 30 
     expect "Email>" 
     send "email id\r" 
     expect "Password>" 
     send "passw0rd" 
     expect -exact ">" 
     send "2\r" 

Bis oberhalb der Linie, wird der Code als expected.From arbeitet die letzten 2 Zeilen weiter oben ist zu sehen, dass , Ich muss 2 bei '>' eingeben. Danach wird die $ prompt wie unten gezeigt, die mit ‚$‘ endet:

 expect "[email protected]:~/PycharmProjects/Trishal-  VC/containers$" 
     send "cf ic init" 

Jetzt, nach kommen auf ‚$‘ prompt erwarte ich, dass der Code ‚cf ic init‘ zu akzeptieren, die ein Befehl zu initialisieren der Arbeitsplatz. Wenn es nicht akzeptiert, bleibt die Ausgabe selbst bei '$' und geht nicht weiter. Ich hatte auch unten versucht:

  expect -exact "$" 
     send "cf ic init" 

kein Glück Bildschirm bleibt bei Trishal @ Trishal-VirtualBox: ~/PycharmProjects/Trishal-VC/Behälter

$

Antwort

0

expect -exact "$" wird sicher arbeiten, um den wörtlichen Dollar entspricht . Alle send Befehle sollten mit \r gesendet werden, was die 'Enter'-Taste darstellt. Fügen Sie nach dem letzten Befehl expect eof hinzu, wenn Ihr Programm zu diesem Zeitpunkt abgeschlossen ist und keine weitere Interaktion erforderlich ist.