web-dev-qa-db-ja.com

スクリプトが計画どおりにパスワードを送信しないことを期待してください

私はこれを読んでみましたが、なぜそれが起こっているのか理解できません。

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を使用しています。

2
E. l4d3

上記のすべての入力に感謝します。すべての提案を試した後、元のスクリプトが突然再び機能し始めました。パスワードの入力を求められ、パスワードが期待どおりに送信された場合、パスワードは以前のように端末に表示されず、拒否されました。自分で入力しているかのように、目に見えない形で端末に渡され、受け入れられました。

そのため、スクリプトを数回実行しましたが、1/10回も同じ問題が解決しませんでした。送信する必要のあるパスワードは3つあり、どれが「合格」で、どちらが端末で「エコー」されて拒否されるかはランダムに見えます。なぜこれが起こっているのかはわかりませんが、Expectや実際のスクリプトとはほとんど関係がないと思います。

1
E. l4d3