これを読もうとしましたが、なぜこれが起こるのかわかりません。
Expectがパスワードを送信すると、端末にプレーンテキストエコーとして表示され、続いて「申し訳ありません。もう一度お試しください」と表示されます。現れる。
スクリプトは次のとおりです。
#!/usr/bin/expect -f
spawn bash
send -- "sudo (many tasks)\r"
expect -exact "\[sudo\] password for elade: "
send -- "password\r"
expect -exact "[email protected]'s password: "
send -- "password\r"
expect "@"
send -- "echo Done; sleep 1; exit\r"
expect eof
最初のパスワードを送信した後の端末出力は次のようになります。
[sudo] password for elade:
password
Sorry, try again.
私はArch LinuxとターミナルエミュレータKonsoleを使用しています。
ベストアンサー1
上記のすべてのコメントに感謝します。すべての提案を試した後、元のスクリプトが突然再び機能し始めました。パスワードの入力を求められ、パスワードが期待どおりに送信されると、以前と同じように端末に表示され、拒否されるのではなく、自分が入力したように見えないように端末に渡され、受け入れられます。
そのため、スクリプトを数回実行しましたが、1/10度も同じ問題が続きました。 3つの異なるパスワードを送信する必要があり、どのパスワードが「通過」され、どのパスワードが端末に「反響」して拒否されるかがランダムに見えます。なぜこれが起こるのかわかりませんが、Expectや実際のスクリプトとは何の関係もないと思います。