Frage

Ich verwende eine Anwendung, die für ein Passwort des Benutzers über ein Dutzend Mal aufgefordert :-( Ich habe versucht, mit erwarten, dieses Problem zu umgehen, und es im Auto-Modus laufen zu lassen, aber ich bin nicht in der Lage über die Frage des mehrfach Passwortes zu erhalten, die nicht genau statisch ist. Manchmal fragt sie 4-5 mal und irgendwann um 9-10 mal.

Gibt es eine bessere Lösung für das Problem als das, was ich unten gegeben haben:

spawn myApp [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
  " password: $"    send "$password\r"
  "^Rollout Done "
  "^Rollout Updated "
}

Mit der obigen Lösung, ich habe das Passwort nur in der Lage gewesen zu fangen zweimal und starten Sie dann die manuelle Eingabe für den Rest der Zeit ist es eine Schleife möglich mit dem Passwort?

War es hilfreich?

Lösung

Sehen Sie die exp_continue Befehl - es verhindert, dass der Strom [expect] Befehl zurückkehrt, so kann es finden alle nachfolgenden Kennwortabfragen.

spawn myApp [lindex $argv 0]
expect {
    -re { password: $} {
        send "$password\r"
        exp_continue
    }
    -re {^Rollout (?:Done|Updated) }
}

Wenn Sie die Benutzer das Passwort eingeben, anstatt sie im Klartext im Skript speichern, finden Sie unter Wie kann ich ein Skript erwartet Aufforderung für ein Passwort machen?

Andere Tipps

Erwarten Sie können Loops verwenden - es ist nur TCL mit einigen zusätzlichen Befehle, die ich glaube. Also einfach tun

set found 0
while {$found < 1}
{
expect {
 " password: $"    send "$password\r"
 "^Rollout Done "  set found 1
 "^Rollout Updated " set found 1
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top