laher/scp-go

Why call session.Run("/usr/bin/scp"...)?

Opened this issue · 3 comments

What exactly does this scp package give me, when you still need to call out to the /usr/bin/scp ?? I mean, why not just do exec.Command() ?

If you could get rid of the /usr/bin/scp and make it cross platform, I would be happy, but if you rely on the existence of scp on your system, I don't see the point of this package? What am I missing?

Hi Hein, I think what you're missing is that it's a remote call to scp
on the other machine, which gets started in 'sink mode'.
Basically, an scp client connects to an ssh server and tells it to start up
an scp process on the server side. The 2 scp processes have a quick
discussion over the ssh channel, then send/receive data in the 'scp
protocol'.
So, you don't need scp installed on your local machine. This blog post
gives a great explanation of scp:
https://blogs.oracle.com/janp/entry/how_the_scp_protocol_works

I don't have any plans to support 'sink mode' (i.e. the remote process),
although I would if an appropriate, pure-Go, SSH server were available.
That would be great for Windows servers.

Cheers

On Wed, Jul 16, 2014 at 10:11 AM, Hein Meling notifications@github.com
wrote:

What exactly does this scp package give me, when you still need to call
out to the /usr/bin/scp ?? I mean, why not just do exec.Command() ?

If you could get rid of the /usr/bin/scp and make it cross platform, I
would be happy, but if you rely on the existence of scp on your system, I
don't see the point of this package? What am I missing?


Reply to this email directly or view it on GitHub
#1.

Thanks for the clarification, and sorry for my ignorance.

No worries, I was also surprised when I realised how it works.

On Wed, Jul 16, 2014 at 3:52 PM, Hein Meling notifications@github.com
wrote:

Thanks for the clarification, and sorry for my ignorance.


Reply to this email directly or view it on GitHub
#1 (comment).