Passa entrada no console Java lançado por um script Bash

0

Por favor, note que eu não escrevi nenhum desses scripts, código Java ou o aplicativo e estou restrito quanto ao que posso modificar nesses scripts.

Eu tenho um script Bash que inicia um console Java /foo/bar/myscript.sh . Especificado dentro, ele chama para iniciar o console Java, mas solicita uma senha antes que o shell seja iniciado. Estou tentando passar um comando para o console Java que executa um procedimento de backup para um aplicativo.

Existe uma maneira de executar o script que passa a senha? A senha não é definida via Bash, mas em algum lugar em Java e eu não sei o nome da variável.

Existe também uma maneira de passar o método Java na mesma linha? Este é o processo manual normal:

  1. ./myScript.sh
  2. Please enter password: myPassword
  3. javaConsole % backup.method("/backup/dir");

Obviamente, isso não está correto, mas, idealmente, um comando seria assim:
echo myPassword | ./myscript.sh | backup.method("/backup/dir");

    
por Greg 08.01.2018 / 20:48

2 respostas

3

Espere, provavelmente, pois isso pode gerar seu script, responder ao prompt de senha e, em seguida, não tenho certeza de como é o prompt do seu console Java ou exatamente o que ele espera, mas:

#!/usr/bin/env expect
spawn -noecho ./myScript.sh
expect -ex password
send -raw "Hunter2\r"
expect -ex javaConsole
send -raw "backup.method(\"/backup/dir\");\r"
# and either you'll need to wait or interact with the java
# to keep it running...
interact

Você também pode executar uma sessão de avaliação com autoexpect e, depois, ver o que isso gera para automação.

    
por 08.01.2018 / 20:55
0
echo 'myPassword
/backup/dir' | /foo/bar/myscript.sh
    
por 08.01.2018 / 21:32

Tags