Timeout funktioniert im Expect-Skript nicht

1

Ich habe das folgende Expect-Skript erstellt, um die Anmeldung bei einem VPN zu automatisieren:

 #!/usr/bin/expect

 set PASS [lindex $argv 0]

 set timeout 10
 spawn  vpnc
 expect    :            {send $PASS\r}
 expect eof

Wenn ich jedoch ein falsches Passwort-Argument gebe, treten die erwarteten 10 Sekunden nicht auf.

Warum tritt diese Zeitüberschreitung von 10 Sekunden nicht auf?

THE_BIG_EXPERT
quelle

Antworten:

1

Ich würde das Timeout explizit erwarten:

set timeout 10
spawn  vpnc
expect :
send [lindex $argv 0]\r
expect {
    timeout {error "incorrect password"; exit 1}
    eof
}
glenn jackman
quelle
Also, worum geht es? , wie löst du das? wo irre ich mich
THE_BIG_EXPERT
1
Ich vermute, dass, während Sie "eof" erwarten, wenn das Timeout auftritt, Ihr Skript nichts damit macht. Hast du meinen Code getestet? Offensichtlich ist "der Punkt", dass ich versuche, Ihnen bei Ihrem Problem zu helfen. Was wirst du mit meinen Bemühungen machen?
glenn jackman
ok ich werde deine lösung auf meiner maschine überprüfen, ich werde zurückkehren, um dir zu geben, was passiert ist - :)
THE_BIG_EXPERT
ABSTIMMUNG FÜR IHRE ARBEITEN
THE_BIG_EXPERT