This is an old revision of the document!


scp

Control flow

  1. 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 in cmd 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>' to scp command to be run on the server
    • call do_cmd() to run assembled scp command on the server
    • do_cmd() forks a child which executes (via execvp()) “ssh -p <port> -l <remuser> — <host> <cmd>” scp command on the server. Connect parent and child via pipes. Parent accesses child's pipes via remin & remout. do_cmd_pid contains child's PID.
  2. On server
    • for -t or -f private flags: remin = stdin; remout = stdout
projects/openssh.1577286767.txt.gz · Last modified: 2019/12/25 16:12 by admin
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0