- - PR -
Javaからsudoを実行したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-21 13:05
JavaからRuntime.exe()を使って、MacOSXでsudoを実行したいと考えています。
1)コマンド発行 2)パスワード入力 3)実行 となるのですが、 1)のコマンド発行してパスワード入力までは進めるのですが、 このあと連続してパスワードを入力させようとしてもうまくできません。 うまく応答を待って、次の入力に進むためにはどのような処理を行ったらよいの でしょうか。下にソースの一部を書きます。 もしくは、他にいいやり方があるのでしょうか。 教えていただければ幸いです。よろしくお願いいたします。 Java 1.4.2 Mac OS 10.4 public boolean exe(String action,char[] password){ Runtime rt = Runtime.getRuntime(); Process pr = null; InputStream is = null; try{ String command = null; if(action.equals("Start")){ command = "./start.sh"; } else if(action.equals("Stop")){ command = "./stop.sh"; } String[] commands = {"sudo",command}; pr = rt.exec(commands); is = pr.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null; while ((line = br.readLine())!= null) { } //パスワード入力を実行 pr = rt.exe("パスワード"); } ・・・・ |
|
投稿日時: 2007-02-21 13:51
>//パスワード入力を実行
>pr = rt.exe("パスワード"); ん?なぜここで、先のコマンド実行とは別のexecになるんでしょうか…? パスワードを送らねばならないのは、あくまで先のコマンド実行に対してでは? もっとも、パスワード入力を標準入力から取っているかどうかは不明ですが。 |
|
投稿日時: 2007-02-21 15:49
標準入力処理をpr = rt.exe("パスワード");でできると思っているのだと思いますが、
out = new PrintStream(pr.getOutputStream()); out.println("パスワード"); とする必要があります。 ただし、プロセス処理中に入力処理を行う必要があるので、多分入力処理は別スレッドにする必要があると思います。(別スレッドにしないでやったことがない) 一応(JavaSE6でWindows用ですが) http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35682&forum=12 の最後にコマンド入力も処理するソースを書いておきました。 |
1