Tentando redirecionar a entrada e a segunda resposta ao script de shell do Linux

1

Eu estou tentando automatizar um processo que cria um arquivo de resposta binário usando um programa java envolvido por um script sh (muitas coisas erradas com isso, mas não com o meu código). O resultado que eu quero exige pressionar [enter] para o primeiro prompt e 'Y' [enter] para o segundo prompt ao executar o script sh.

Consegui que funcionasse em uma caixa do Linux usando o seguinte código:

echo Y > ans; ./script < ans 'echo -e \\r'

Em outra caixa do Linux, não está funcionando (o script entra em um loop infinito, novamente, não no meu código). Ambas as caixas executam o mesmo kernel e versão.

Existem maneiras mais simples e diretas de fazer isso, tenho certeza. No entanto, preciso que ele funcione de forma consistente. Não estou convencido de que não seja assim que uma das caixas é configurada.

    
por Stephen Pliska-Matyshak 26.10.2015 / 18:01

1 resposta

1

Tente um script simples de expect :

#!/usr/bin/expect

set timeout 20
spawn /path/to/your/java/shell/script/thing.sh

expect "FirstPrompt:" { send "\r" }
expect "SecondPrompt:" { send "Y" }
interact

... onde FirstPrompt é o texto do primeiro prompt (portanto, se o seu script de shell prompts "Por favor, pressione ENTER", então você precisa disso, textualmente, onde eu escrevi "FirstPrompt:" no exemplo expect script) e SecondPrompt é o segundo promt, textualmente.

... Eu também suponho que expect está instalado e está localizado em /usr/bin/expect em seu sistema. Se não for esse o caso, instale-o e use o caminho correto.

    
por 26.10.2015 / 20:13