2016-05-09 6 views
1

Ich muss rdiff-backup-Befehle in Java ausführen. Ich versuche verzweifelt, einen Backup-Befehl von lokal nach remote mit Runtime auszuführen.rdiff-backup Java-Laufzeit exec Remote-Multiargumente Probleme

Ich brauche ein Remote-Schema zu verwenden, weil ich nicht Port 22

Als selber Befehl standart verbinden kann arbeitete in Windows-Shell, Remote-Befehle verweigern zu arbeiten, ich habe so etwas wie dies versucht:

Runtime r = Runtime.getRuntime(); 
Process proc = r.exec("C:/rdiff/rdiff-backup.exe " 
+"--remote-schema=" 
+"ssh -C -p16000 %s rdiff-backup --server " 
+"C:/Users/Utilisateur/Desktop/backup " 
+"[email protected]::/var/backup"); 

immer diese Fehlermeldung: Fatal error: Bad Kommandozeilen-Optionen: Option nicht erkannt -C

oder

String[] commandLine= {"C:/rdiff/rdiff-backup.exe", 
"C:/Users/Utilisateur/Desktop/backup", 
"\"-p 16000 [email protected]\"", 
"::/var/backups"}; 

Runtime r = Runtime.getRuntime(); 
Process proc = r.exec(commandLine); 

immer diese Fehlermeldung: Fatal Error: Schaltet fehlende oder falsche Anzahl von Argumenten

Danke für Ihre Hilfe ...

Antwort

0

Die erste Methode, die Sie verwenden, ist in Ordnung, in Java. Aber deine Kommandozeile ist falsch - ssh -C ist kein richtiger Befehl. Stellen Sie sicher, dass der Befehl in Ihrer Shell funktioniert, und verwenden Sie ihn dann in Ihrer ersten Methode.

+0

Vielen Dank! Es funktioniert schließlich mit: Prozess proc = r.exec ("C: /rdiff/rdiff-backup.exe" + "- Remote-Schema" + "\" ssh -p16000% s rdiff-backup --server \ "" + "C:/Benutzer/Utilisateur/Desktop/backup" + "[email protected] ::/var/backups"); Aber ich bekomme keine Antwort (hoffentlich 0) mit InputStream is = proc.getInputStream(); result = new BufferedReader (neuer InputStreamReader (is)) .zeilen(). Collect (Collectors.joining ("\ n")); –

+0

siehe http://stackoverflow.com/questions/5711084/java-runtime-getruntime-getting-output-from-executing-a-command-line-program für eine Lösung beim Lesen der Ausgabe von dem Befehl –

+0

Das ist perfekt, noch einmal vielen Dank Christian. –