This is an old revision of the document!
scp
Control flow
- On client (copy remote to local case)
- construct
scp
command to be executed on the server via ssh. append-v -r -p -d
flags as appropriate. Resulting command stored incmd
variable - call
toremote()
if destination is remote;tolocal()
if destination is local (handles 'remote to local' and 'local to local' cases) - for 'remote to local' case, append
'-f <src>
' toscp
command to be run on the server - call
do_cmd()
to run assembledscp
command on the server do_cmd()
forks a child which executes (viaexecvp()
) “ssh -p <port> -l <remuser> — <host> <cmd>
” scp command on the server. Connect parent and child via pipes. Parent accesses child's pipes viaremin
&remout
.do_cmd_pid
contains child's PID.
- On server
- for
-t
or-f
private flags:remin = stdin
;remout = stdout