2

次のようなJavaプログラムからコマンドを実行しています

Process myProcess = Runtime.getRuntime().exec("sudo cat /etc/sudoers"); //It asks for password so I send password through outputstream from my program.

InputStream inputStream = myProcess.getInputStream();
OutputStream outputStream = myProcess.getOutputStream();
outputStream.write("mypassword".getBytes()); // write password in stream
outputStream.flush();
outputStream.close();

しかし、問題は、プログラムから出力ストリームを介してパスワードを既に送信しているため、パスワードを再度要求されることです。これを解決するために、私は何度も試しましたが、実際にはできませんでした。

シェル スクリプトを使用することで、端末にパスワードを提供することができ、プログラムは正常に動作しますが、最も柔軟な方法ではありません。

私のJavaプログラムを介してパスワードを提供する方法を教えてもらえますか? (シェルプログラミングの代わりに)

4

1 に答える 1

2

-Ssudo のオプションを使用して実行できます。

String[] cmd = {"/bash/bin","-c","echo yourpassword| sudo -S your command"}; 
Runtime.getRuntime.exec(cmd); 

しかし、それが推奨されるかどうかはわかりません。

私は著者ではありません。私はこれを見つけました: http://www.coderanch.com/t/517209/java/java/provide-password-prompt-through-Java

于 2012-05-30T09:46:46.697 に答える