将输入传递到 Bash 脚本启动的 Java 控制台

将输入传递到 Bash 脚本启动的 Java 控制台

请注意,我没有编写任何这些脚本、Java 代码或应用程序,并且我在这些脚本中可以修改的内容受到限制。

我有一个启动 Java 控制台的 Bash 脚本/foo/bar/myscript.sh。在内部指定,它调用启动 Java 控制台,但在启动 shell 之前提示输入密码。我正在尝试将命令传递到 Java 控制台,以执行应用程序的备份过程。

有没有办法运行传递密码的脚本?密码不是通过 Bash 设置的,而是在 Java 中的某个地方设置的,我不知道变量名称。

还有一种方法可以在同一行中传递Java方法吗?这是正常的手动过程:

  1. ./myScript.sh
  2. Please enter password: myPassword
  3. 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

相关内容