Manuel López-Ibáñez wrote:
Is it very complicated to use several -o before each option?
If you try:
rsync -e "ssh -o Port=22 -o ClearAllForwardings=yes -o
ConnectTimeout=5 target" myfile :/remote/path/
It works perfectly!!
However, is there any possible scenario where the argument of -e
should be interpreted by a shell?
The ProxyCommand option in ssh usually contains space-characters, so it would
not work in your example.
Interpretation by a shell would solve this, but there are other possible
sollutions as well.
Anyway, does the shell would understand the nested quotes at all? If
not, then even if the -e argument is interpreted by a shell, it won't
make any difference in this case, will it?
Lets take for example the next command on my interactive shell:
rsync -e "ssh -o \"ProxyCommand corkscrew myhttpProxy\"" testfile.txt
targetcomputer.domain:receive
Then my shell will call rsync with the following parameters:
1 -e
2 ssh -o "ProxyCommand corkscrew myhttpProxy"
3 testfile.txt
4 targetcomputer.domain:receive
(Note that the shell uses and removes the "-signs and un-escapes the embedded
\"-signs)
(Note that -e and the value are passed as 2 parameters, this is ok)
If rsync would give this command to another shell, then this shell would call
ssh with parameters:
1 -o
2 ProxyCommand corkscrew myhttpProxy
3+ parameters from rsync to ssh (like hostname)
(Note that the shell uses and removes the "-signs.)
(Note that -o and the value are passed as 2 parameters, this is ok)
This should work.
But rsync will split the ssh command on spaces and call ssh with parameters:
1 -o
2 "ProxyCommand
3 corkscrew
4 myhttpProxy"
5+ parameters from rsync to ssh (like hostname)
(Note that -o option values is split over 4 parameters, ssh will not understand
this.)
(Note that rsync ignores and passes the "-signs.)
This could not work, because ssh cannot understand the -o option.
--
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html