2017-10-26 3 views
0

Ich Aufruf in exec.Command:Lauf rsync mit rsh Option über exec.Command

rsh := fmt.Sprintf("--rsh=\"/usr/bin/ssh -p %s -o StrictHostKeyChecking=no -l %s\"", *destPort, *destUserName) 
cmd := exec.Command("rsync", "-avz", rsh, from, fmt.Sprintf("%s:%s", *destHost, to)) 
fmt.Println(cmd) 
var outb, errb bytes.Buffer 
cmd.Stdout = &outb 
cmd.Stderr = &errb 

err = cmd.Run() 
fmt.Println(outb.String()) 
fmt.Println(errb.String()) 

Und ich bin immer diese Fehlermeldung:

rsync: Failed to exec /usr/bin/ssh -p 1999 -o StrictHostKeyChecking=no -l root: No such file or directory (2) 
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.9] 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
rsync error: error in IPC code (code 14) at io.c(605) [sender=3.0.9] 

Versucht, den vollständigen Pfad explizit festgelegt von ssh in rsh.

Der Ausgang des fmt.Println(cmd) scheint richtig:

&{/usr/bin/rsync [rsync -avz --rsh="/usr/bin/ssh -p 1999 -o StrictHostKeyChecking=no -l root" /var/www/html/atlaserpsolution.com/production/altractors h3.ftp.datagix.com:/var/www/vhosts/atlas.ns513.datagix.com/atlaserp/documents/altractors] [] <nil> <nil> <nil> [] <nil> <nil> <nil> <nil> <nil> false [] [] [] [] <nil> <nil>} 

Was mit meinem exec.Command falsch?

+2

Sie sollten nicht tun müssen, um jede Schale hier zu entkommen, versuchen Sie bitte die rsh Befehl ohne Anführungszeichen folgende Einzelheiten, etwa so: 'fmt.Sprintf (" - rsh =/usr/bin/ssh -p% s -o StrictHostKeyChecking = Nein -l% s ")' – nos

Antwort

1

Sie verschmelzen zwei Argumente zu einem (--rsh und /usr/bin/ssh ...). Teilen Sie sie und es sollte funktionieren:

rsh := fmt.Sprintf("/usr/bin/ssh -p %s -o StrictHostKeyChecking=no -l %s", *destPort, *destUserName) 
cmd := exec.Command("rsync", "-avz", "--rsh", rsh, from, fmt.Sprintf("%s:%s", *destHost, to)) 
+0

Auf den zweiten Gedanken, das Problem ist wahrscheinlich die Zitate mehr als die Kombination der Argumente. Zwei Argumente sollten jedoch ohnehin viel klarer sein. – Peter