Acho que esperaria ver um contexto maior do seu código. Mas eu acho que algo nesse sentido deve funcionar:
expect -c "spawn jarsigner <options here> ; expect \"Enter Passphrase for keystore:\" ; send $PASSWORD\n ; interact"
Eu não acho que entendi corretamente o utilitário "esperar".
Enquanto pesquisava uma maneira de automatizar um processo de construção que envolvia a assinatura jar, me deparei com a expectativa e achei que poderia usá-la para fornecer uma senha ao jarsigner (ter uma senha em um shell script é uma boa ideia os riscos de).
espere "Insira a frase secreta para keystore:"
Em vez de pegar isto, o jarsigner sentou esperando naquela linha.
Estou completamente entendendo mal o ponto de "esperar" e, se sou, o que posso usar para alcançar esse efeito?Primeiro de tudo, você tem certeza que o jarsigner não tem como fornecer isso a partir da opção de linha de comando ou de um arquivo de configuração? Se não, espere que seja um bom último recurso. Certifique-se de gerar o subprocesso (jarsigner) usando um pty, não um pipe. Alguns aplicativos, especialmente aqueles que pedem uma senha, usam o dispositivo tty no modo raw e esperam uma interface tty.
Então, depois de esperar, você precisa enviar a senha.
Tags automation unix