- - PR -
バッチファイル内のrshコマンドがjavaから実行できない!
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-05-14 21:58
こんにちは。としくんです。
javaから(バッチを経由して)rshを実行することは不可能 なのでしょうか? バッチファイル「d:\testA.bat」に、次のようにrshコマンドが 記述されているとします。(「1」はバッチへの引数) testA.batを実行すると、rshによりhogehoge.batが実行されます。 --------------------------------------------------------- echo test001 >> d:\test.log rsh RSH_HOST -l RSH_USER d:\hogehoge.bat 1 if %errorlevel%==0 goto END0 exit :END0 echo test002 >> d:\test.log --------------------------------------------------------- 次にこのtestA.batを、javaから次のように実行します。 --------------------------------------------------------- String command = "d:\testA.bat"; Process process = null; Runtime runtime = Runtime.getRuntime(); try{ process = runtime.exec(command); }catch(Exception e){ e.printStackTrace(); } int result = OK; if(process != null){ try{ java.io.InputStream es = process.getInputStream(); int ch; while (( ch = es.read()) != -1 ) { } result = process.waitFor(); }catch(InterruptedException ie){ ie.printStackTrace(); } } --------------------------------------------------------- その結果rshは実行されず、d:\test.logは次のように なります。 ---------------------------- test001 test002 ---------------------------- 【環境】 Windows2000 Server、JDK1.3.1_08 どうぞよろしくお願いいたします。 [ メッセージ編集済み 編集者: としくん 編集日時 2004-05-15 15:27 ] |
|
投稿日時: 2004-05-14 23:11
自己レスです。
↑の質問がやや複雑でしたね。関連した質問をついでに1つ。 Windows上でバッチを実行するのと、Javaからバッチを実行する際の”違い” をご存知でしたら、どなたか教えていただけないでしょうか。 (特にセキュリティ上の) |
|
投稿日時: 2004-05-18 09:36
自己レスです。原因がわかりました。
【原因】 まず私の環境では、バッチファイルを起動する為のjavaアプリケーションを サービスから起動しています。 そして、rshを実行するにはユーザAdministratorである必要があります。 サービスのプロパティに、起動時のアカウントを指定できるのですが、 その指定をしていなかった為に、「system権限」でjavaアプリケーションが 実行されていました。 その結果、rshで「Access Denied」エラーが発生していました。 これは、Windows起動時のサービス自動起動時だけではなく、Administratorで Windowsにログイン後にサービスを起動した場合でも同様の現象が 発生します。 【対処】 [管理ツール]-[サービス]画面から、該当サービスのプロパティを表示します。 「ログオン」タブを選択し、「アカウント」を選択します。 そして、サービスの起動に指定したいアカウントのユーザ名/パスワードを 入力します。 これで、サービス起動時のアカウントを指定することが出来ます。 ●Administratorの場合 アカウント:.\Administrator パスワード:********** 以上です。 |
1
