質問

私はアプリケーションを実行しています。これにより、ユーザーのパスワードが約12回プロンプトされます:-(この問題を回避するために期待を使用して、自動モードで実行しましたが、複数回の問題を乗り越えることができませんパスワード。これは正確に静的ではありません。4~5回尋ねられることもあれば、9~10回ほど尋ねられることもあります。

私が以下に挙げたものよりも良い問題の解決策はありますか?

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

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

役に立ちましたか?

解決

調べてください exp_Continue コマンド -- それは電流を防ぎます [expect] コマンドが戻らないようにすることで、後続のパスワード プロンプトを検出できるようになります。

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

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

他のヒント

ループを使用することができます期待 - それは私が信じているいくつかの追加コマンドでちょうどTCLです。だからやる。

set found 0
while {$found < 1}
{
expect {
 " password: $"    send "$password\r"
 "^Rollout Done "  set found 1
 "^Rollout Updated " set found 1
}
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top