私はこれを読んでみましたが、なぜそれが起こっているのか理解できません。
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.
ArchLinuxとターミナルエミュレーターのKonsoleを使用しています。
上記のすべての入力に感謝します。すべての提案を試した後、元のスクリプトが突然再び機能し始めました。パスワードの入力を求められ、パスワードが期待どおりに送信された場合、パスワードは以前のように端末に表示されず、拒否されました。自分で入力しているかのように、目に見えない形で端末に渡され、受け入れられました。
そのため、スクリプトを数回実行しましたが、1/10回も同じ問題が解決しませんでした。送信する必要のあるパスワードは3つあり、どれが「合格」で、どちらが端末で「エコー」されて拒否されるかはランダムに見えます。なぜこれが起こっているのかはわかりませんが、Expectや実際のスクリプトとはほとんど関係がないと思います。