2012-04-25 22 views
0

Runtime.exec()を使用して新しいプロセスを開始しようとしていますが、問題がリモートからsshを使用してJavaプログラムを実行しています。コード:Java Runtime.exec()Linuxでsshを使用する場合

test = "ssh -t [email protected] java packageName.ClassName portNumber (Other command line args for this class)" 
Process proc = Runtime.getRuntime().exec(new String[] {"/bin/bash", "-c", test}); 

これが失敗したり、キャッチ、私は新たに実行中のプロセスの標準出力を見ることができるようにする必要があり、私はしませんしません。

注:コマンドラインからssh -t [email protected] java packageName.ClassName portNumber (Other command line args for this class)を実行すると正常に動作します。私はsshキーを使用してパスワードを要求しないようにホストをセットアップしました。

アイデア?

答えて

2

作成するサブプロセスの出力を取得するには、Process.getInputStreamを使用する必要があります。

Runtime.execに関する良い議論については、this articleを参照してください。

1

私はプロセスの標準出力に対応する入力ストリームを尋ねて、それをあなたの標準出力に出力することができると思います。実行後に確認する必要がある場合は、waitFor()メソッドを呼び出して、印刷を開始する前に終了してください。

5

ランタイムを使用することは悪いことです。 jschまたは類似のライブラリを使用してください。

+0

+1 Jschは、すべてのsshとsftpでうまく動作します。 – Gray

+0

私はもっと同意できませんでした。 'Runtime.exec()'を避けてください。特に純粋なJavaライブラリがあれば避けてください。 –

+0

+1今までjschについて知りませんでした –

関連する問題