Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| projects:openssh [2019/12/25 16:32] – [Control flow] admin | projects:openssh [2026/10/25 19:30] (current) – external edit 127.0.0.1 |
|---|
| ====== scp ====== | ====== scp ====== |
| ===== Control flow ===== | |
| ==== scp run on client (copy remote to local case) ==== | ==== 1) scp run 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 | * 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) | * call ''toremote()'' if destination is remote; ''tolocal()'' if destination is local (handles 'remote to local' and 'local to local' cases) |
| * ''tolocal()->sink()'' receives file from child via ''remin'' & ''remout'' and stores it to the local destination | * ''tolocal()->sink()'' receives file from child via ''remin'' & ''remout'' and stores it to the local destination |
| * finaly wait for child to finish, check for errors, close ''remin'' & ''remout'' and exit | * finaly wait for child to finish, check for errors, close ''remin'' & ''remout'' and exit |
| ==== On server ==== | ==== 2) client runs ssh to spawn server side of scp ==== |
| | ==== 3) server accepts ssh connection from client ==== |
| * for ''-t'' or ''-f'' private flags: ''remin = stdin''; ''remout = stdout'' | * for ''-t'' or ''-f'' private flags: ''remin = stdin''; ''remout = stdout'' |