Java を使用して、特定の場所でスクリプトを実行したいと考えています。手動で実行すると、スクリプトは正常に実行されます。
/export/home/trace.sh param1 param2 param3 param4
これは、Java からスクリプトを実行するための私のコードです。
try {
Runtime runtime = Runtime.getRuntime();
Process proc = null;
System.out.println("starting search");
proc = runtime.exec( pathServer + "/trace.sh " + fullDate + " " + fullDateTo + " " + mA.substring(2) + " " + mB.substring(2));
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
System.out.println("end search " + System.currentTimeMillis());
}
catch (Exception e)
{
System.out.println(e.toString());
e.printStackTrace();
}
スクリプトを実行すると、指定した場所に「txt.dat」が生成されます。しかし、「txt.dat」は生成されません。例外が何であるかを把握しようとしていますが、例外はキャッチされません。
私のコードはすでに正しいですか?スクリプトを処理しているかどうかはどうすればわかりますか? また、プロセス中に発生した例外をキャッチするにはどうすればよいですか? ありがとう。
更新 2
印刷するコードをいくつか追加しgetInputStream
ますgetErrorStream
。についてgetInputStream
は、何も得られませんでした。つまり、null です。の場合getErrorStream
、結果としてこれが得られます
Host key verification failed
このエラーの意味はまだわかりません。
Java アプリはサーバー B で実行されます。
通常、(サーバー B で) 呼び出しようとしているスクリプトは、サーバー A に ssh し、サーバー A で他のスクリプトを実行します。text.dat を生成し、次にサーバー B に sftp します。手動で実行すると、txt.dat が正常に実行されます。生成され、サーバー B に転送されます。
アップデート 3
すべての助けと提案に感謝します。結局のところ、私のJavaアプリは別のユーザーで実行されています。手動で実行すると、別のユーザーを使用しました。そこで、サーバー B からサーバー A にホスト キーを追加しました。現在、正常に実行されています。