Wie gehe ich mit einer Bedingung um, wenn ein Expect-Skript, das ein anderes Skript auf einem Remote-Host ausführt, unterbrochen wird?

1428
user417721

Ich benutze ein Expect-Skript, um xyz.exp zu sagen, um sich bei einem entfernten Host anzumelden und ein anderes Skript abc.sh auszuführen

Abc.sh läuft jetzt meistens gut, aber es gibt ein Szenario, in dem das Skript angehalten wird, wenn eine bestimmte Bedingung nicht erfüllt ist, einige Benutzereingaben erfordert und dann fortgesetzt wird.

Gibt es eine Möglichkeit, mit dieser Situation so umzugehen, dass das Expect-Skript xyz.exp dieses Problem auch interaktiv lösen kann?

In diesem Fall hängen beide Skripts und ich muss das Terminal schließen und einige Nacharbeitsschritte ausführen.

0
Das ist genau das, was erwartet wird. Möglicherweise müssen Sie etwas Code des Skripts hinzufügen, damit wir Ihnen helfen können. chaos vor 9 Jahren 1

1 Antwort auf die Frage

0
glenn jackman

Du wirst dich ändern

expect "something that you already expect" 

zu

expect { "this happens sometimes" { send -- "some input\r" exp_continue } "something that you already expect" } 
Wenn wir in der Form Folgendes erwarten: Erwarten Sie {"das passiert manchmal" "etwas, was Sie bereits erwarten"} Bedeutet das, dass es nur funktionieren wird, wenn diese Bedingung auftritt und sie gewonnen hat ' Bleibt das richtig? user417721 vor 9 Jahren 0