나는 이러한 스크립트, Java 코드 또는 애플리케이션을 작성하지 않았으며 이 스크립트에서 수정할 수 있는 내용이 제한되어 있습니다.
Java 콘솔을 시작하는 Bash 스크립트가 있습니다 /foo/bar/myscript.sh
. 내부적으로 지정되며 Java 콘솔을 시작하도록 호출하지만 셸을 시작하기 전에 비밀번호를 묻는 메시지를 표시합니다. 내 애플리케이션의 백업 프로세스를 수행하기 위해 Java 콘솔에 명령을 전달하려고 합니다.
비밀번호를 전달하는 스크립트를 실행하는 방법이 있습니까? 비밀번호는 Bash를 통해 설정되지 않았지만 Java 어딘가에서 변수 이름을 모릅니다.
같은 줄에 Java 메소드를 전달하는 방법도 있습니까? 이는 일반적인 수동 프로세스입니다.
./myScript.sh
Please enter password: myPassword
javaConsole % backup.method("/backup/dir");
분명히 이는 잘못된 것이지만 이상적으로 명령은 다음과 같아야 합니다.
echo myPassword | ./myscript.sh | backup.method("/backup/dir");
답변1
이는 스크립트를 생성하고 비밀번호 프롬프트에 응답한 다음 Java 콘솔 프롬프트가 어떻게 보이는지 또는 정확히 무엇을 기대하는지 잘 모르기 때문에 가능합니다. 그러나 다음과 같습니다.
#!/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
평가판 세션을 실행 autoexpect
하고 자동화가 생성하는 내용을 확인할 수도 있습니다.
답변2
echo 'myPassword
/backup/dir' | /foo/bar/myscript.sh