2016-07-01 25 views
0

rsyncでファイルを転送しようとしています。ここでJava - パスワード付きProcessBuilder rsyncコマンドが失敗する

は私の抜粋です:

ProcessBuilder builder = new ProcessBuilder("rsync", "-az", "-e", "ssh -q -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oPubkeyAuthentication=no", username + "@" + host + ":" + filePath, destPath); 
Process process = builder.start(); 
InputStream errorStream = process.getErrorStream(); 

// Password 
OutputStream outputStream = process.getOutputStream(); 
outputStream.write(password.getBytes(StandardCharsets.UTF_8)); 

// Wait for execution 
int exitValue = process.waitFor(); 
if (exitValue != 0) { 
    String errorMessage = read(errorStream); 
    System.out.println(errorMessage); 
} 

と、これはエラーメッセージです:私は(パスワード、ユーザ名、ホストなどのような)メソッドの引数を確認することができ

rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] 
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.0] 

はnull以外であり、有効です。また、CLIを使用して同じrsyncコマンドを正常に実行できます。

私は同様の問題hereを見つけましたが、引用符の有無にかかわらずSSHオプションを試しましたが、動作しませんでした。プログラムを実行している間ここで

ps aux | grep rsyncの出力です:

emre  8566 0.0 0.0 17396 908 ?  S 18:15 0:00 rsync -az -e ssh -q -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oPubkeyAuthentication=no [email protected]:/tmp/dummy-file /tmp/ 
emre  8568 0.3 0.0 36148 3028 ?  S 18:15 0:00 ssh -q -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oPubkeyAuthentication=no -l user XXXX rsync --server --sender -logDtprze.iLs . /tmp/dummy-file 

は、私はここで何をしないのですか?これはProcessBuilderを使用する正しい方法ですか? rsyncは、それ自体で認証を処理しない

答えて

0

、ssh-agentの代わりにこれを行い、事前に

感謝。 出力ストリームを処理するためのパスワードの書き込みが間違っています:パスワードをssh-agentに渡しません。代わりに、環境変数RSYNC_PASSWORD=<password>を設定することができます。

関連する問題