Bashスクリプトによって起動されたJavaコンソールに入力を渡す

Bashスクリプトによって起動されたJavaコンソールに入力を渡す

私はこれらのスクリプト、Javaコード、またはアプリケーションを書いていません。このスクリプトで変更できる内容は限られています。

Javaコンソールを起動するBashスクリプトがあります/foo/bar/myscript.sh。内部的に指定され、Javaコンソールの起動を呼び出しますが、シェルを起動する前にパスワードの入力を求められます。私のアプリケーションのバックアッププロセスを実行するために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、自動化が生成する内容を確認することもできます。

おすすめ記事