0

ユーザーのパスワードを約12回要求するアプリケーションを実行しています:-(この問題を回避し、自動モードで実行するためにexpectを使用してみましたが、複数回の問題を解決できませんパスワード。これは厳密には静的ではありません。4〜5回、場合によっては9〜10回要求されることがあります。

私が以下に与えたものよりも問題に対するより良い解決策はありますか?

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

上記の解決策では、パスワードを2回しかキャッチできず、残りの時間は手動で入力を開始できましたが、パスワードでループが発生する可能性はありますか?

4

2 に答える 2

3

exp_continueコマンドを検索します。これにより、現在のコマンドが返さ[expect]れなくなり、後続のパスワードプロンプトを見つけることができます。

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

スクリプトにプレーンテキストでパスワードを保存するのではなく、ユーザーにパスワードを入力してもらいたい場合は、「パスワードの期待スクリプトプロンプトを作成するにはどうすればよいですか?」を参照してください。

于 2009-06-03T22:06:48.497 に答える
0

ループを使用できることを期待してください-それは私が信じるいくつかの追加されたコマンドを備えた単なるTCLです。だから

set found 0
while {$found < 1}
{
expect {
 " password: $"    send "$password\r"
 "^Rollout Done "  set found 1
 "^Rollout Updated " set found 1
}
}
于 2009-06-03T18:32:17.570 に答える