2011-07-15 14 views
1

1つのUnixボックスから別のUnixボックスに多数のファイルを転送するアプリケーションを作成しています。 Javaからシェルファイルをリモートで実行する必要があります。Java API for Unix

この目的のためのAPIはありますか?あるいは、Java自体に何かがありますか?
私はちょっと調べましたが、この目的に合ったものは見つかりませんでした。

EDIT - 申し訳ありませんが、私のJavaプログラムがWindowsマシン上で実行されていることを忘れていましたが、UNIXボックスはリモートです。

+0

最初のパスでそれを逃すのはかなり大きな要件です... :) – sdolgy

+0

はい、申し訳ありませんが、私はすぐに私の心に何が来たかを書きました。 – Sid

答えて

1

かもしれません。これは、あなたのptogramがscpやsftpのようなファイルをコピーし、リモートコマンド(sshのような)を実行するのを許可します。

http://www.jcraft.com/jsch/がその一例です。他にもあります。

+0

申し訳ありませんが、私のJavaプログラムがWindowsマシン上で実行されていることを忘れてしまいました。 – Sid

+1

WindowsでJavaを実行しても問題ありません。 jschは「純粋なJava」実装であり、ローカルマシン上に「ssh」プログラムを持つことに依存しません。リモートUNIXから別のリモートUNIXへのコピーは、2ステップコピー(リモートAからローカルへのコピー、ローカルからリモートBへのコピー)として実行できます。あるいは、jschを使用して、UNIXのいずれかのボックスで "scp"または "rsync"コマンドを実行することもできます。 –

5

Runtime.getRuntime().exec("cp -r stuff.txt [email protected]:/home/");を使用できませんでしたか?あるいは、UNIXのシェルコマンドと具体的にインターフェースする何かを探していますか?

Hereは、JavaでOSコマンドを実行する例です。

私はRuntime.getRuntime().exec("ls -lrt /tmp/*2302312* [email protected]");が、スローされた次のエラーを実行してみました:

java.io.IOException: Cannot run program "ls":CreateProcess error=2, The system cannot find the file specified 
java.lang.ProcessBuilder.start(ProcessBuilder.java:459) 
+2

これとネットワークを一緒に使用して、他のマシンからANYコマンドを実行できる環境を作成することができます。次のようなものを使う:String s = ; Runtime.getRuntime()。exec(s); 環境のセキュリティによっては、これを保つ方法がわからない場合、私はこれをしません!いずれにせよ、言及のために +1。これは私がそれを行う方法であり、両側にたくさんのセキュリティがあります。 –

+0

@ Zeychin:セキュリティ上の良い点(+1) –

+1

'cp -R stuff'はおそらく、ある種の共有が設定されていない限り、「unix boxから別のUNIXボックスへ」と動作しませんでした。 – sdolgy

2

Java Remote Method Invocationがあります。これが適切かどうかは、サーバーが提供するサービスによって異なります。

+0

これは、安全性の高い方法のように思えます。 –

+0

申し訳ありませんが、私のJavaプログラムがWindowsマシン上で実行されていることを忘れてしまいました。 – Sid

1

Any good rsync library for Java?

これは、私はあなたが役に立つのJava SSHライブラリを見つけるかもしれないと思う「UNIXボックスにUNIXボックス」から、あなたの問題を解決することができるもの

+0

申し訳ありませんが、私のJavaプログラムがWindowsマシン上で実行されていることを忘れていましたが、UNIXボックスはリモートです。 – Sid