スクリプトが予定どおりパスワードを送信するとは予想されません。

スクリプトが予定どおりパスワードを送信するとは予想されません。

これを読もうとしましたが、なぜこれが起こるのかわかりません。

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や実際のスクリプトとは何の関係もないと思います。

おすすめ記事