私はこれらのスクリプト、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