- PR -

バッチファイル内のrshコマンドがjavaから実行できない!

1
投稿者投稿内容
としくん
会議室デビュー日: 2004/02/27
投稿数: 5
投稿日時: 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/02/27
投稿数: 5
投稿日時: 2004-05-14 23:11
自己レスです。
↑の質問がやや複雑でしたね。関連した質問をついでに1つ。

Windows上でバッチを実行するのと、Javaからバッチを実行する際の”違い”
をご存知でしたら、どなたか教えていただけないでしょうか。
(特にセキュリティ上の)
としくん
会議室デビュー日: 2004/02/27
投稿数: 5
投稿日時: 2004-05-18 09:36
自己レスです。原因がわかりました。

【原因】
まず私の環境では、バッチファイルを起動する為のjavaアプリケーションを
サービスから起動しています。
そして、rshを実行するにはユーザAdministratorである必要があります。

サービスのプロパティに、起動時のアカウントを指定できるのですが、
その指定をしていなかった為に、「system権限」でjavaアプリケーションが
実行されていました。
その結果、rshで「Access Denied」エラーが発生していました。

これは、Windows起動時のサービス自動起動時だけではなく、Administratorで
Windowsにログイン後にサービスを起動した場合でも同様の現象が
発生します。

【対処】
[管理ツール]-[サービス]画面から、該当サービスのプロパティを表示します。
「ログオン」タブを選択し、「アカウント」を選択します。
そして、サービスの起動に指定したいアカウントのユーザ名/パスワードを
入力します。
これで、サービス起動時のアカウントを指定することが出来ます。
●Administratorの場合
 アカウント:.\Administrator
 パスワード:**********

以上です。
1

スキルアップ/キャリアアップ(JOB@IT)