Ожидается, что скрипт не отправит пароль, как планировалось

Ожидается, что скрипт не отправит пароль, как планировалось

Я пытался читать об этом, но не могу понять, почему это происходит.

Когда 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 раз та же проблема все еще сохранялась. Нужно отправить три разных пароля, и какой из них «проходит», а какой «отображается» в терминале и отклоняется, похоже, случайным образом. Я не знаю, почему это происходит, но подозреваю, что это мало связано с Expect и самим скриптом.

Связанный контент