Compreendendo o Unix “Esperar”

2

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?

    
por zchtodd 31.12.2010 / 23:07

2 respostas

1

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"

    
por 01.01.2011 / 01:34
1

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.

    
por 31.12.2010 / 23:30