2

Я не думаю, что правильно понимаю утилиту "ожидаю".

При поиске способа автоматизации процесса сборки, который включает в себя подпись jar, я столкнулся с ожидаемым и подумал, что мог бы использовать его для предоставления пароля для jarsigner (является ли хорошей идеей наличие пароля в сценарии оболочки, я понимаю риски, связанные с ).

ожидайте "Введите кодовую фразу для хранилища ключей:"

Вместо того, чтобы поймать это, ясновидящий сидел в ожидании на этой линии.

Полностью ли я неправильно понимаю смысл "ожидать", и если да, что я могу использовать для достижения этого эффекта?

2 ответа2

1

Прежде всего, вы уверены, что у jarsigner нет способа указать это из командной строки или из файла конфигурации? Если нет, ожидайте, что это хорошее последнее средство. Убедитесь, что вы создали подпроцесс (jarsigner), используя pty, а не трубу. Некоторые приложения, особенно те, которые запрашивают пароль, используют устройство tty в режиме raw и ожидают интерфейс tty.

Затем, после ожидания вы должны отправить пароль.

1

Я думаю, что ожидалось бы увидеть более широкий контекст вашего кода. Но я думаю, что-то вроде этого должно работать:

expect -c "spawn jarsigner <options here> ; expect \"Enter Passphrase for keystore:\" ; send $PASSWORD\n ; interact"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .