diff options
author | cdoern <cdoern@redhat.com> | 2021-06-25 14:26:33 -0400 |
---|---|---|
committer | cdoern <cdoern@redhat.com> | 2021-07-30 17:19:24 -0400 |
commit | 1d10ca739f3599b9bd746783ad15c8f51ce9f75c (patch) | |
tree | 28565571d2e564fc367ca6ad97eccc9ffc3c9d19 /cmd/podman/system/connection/shared.go | |
parent | ec5ab591ddbb905b69b3daa6012e9c0dfde9fcec (diff) | |
download | podman-1d10ca739f3599b9bd746783ad15c8f51ce9f75c.tar.gz podman-1d10ca739f3599b9bd746783ad15c8f51ce9f75c.tar.bz2 podman-1d10ca739f3599b9bd746783ad15c8f51ce9f75c.zip |
Created scp.go image_scp_test.go and podman-image-scp.1.md
added functionality for image secure copying from local to remote.
Also moved system connection add code around a bit so functions within that file
can be used by scp.
Signed-off-by: cdoern <cdoern@redhat.com>
Diffstat (limited to 'cmd/podman/system/connection/shared.go')
-rw-r--r-- | cmd/podman/system/connection/shared.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/cmd/podman/system/connection/shared.go b/cmd/podman/system/connection/shared.go new file mode 100644 index 000000000..3fd7c59fb --- /dev/null +++ b/cmd/podman/system/connection/shared.go @@ -0,0 +1,28 @@ +package connection + +import ( + "bytes" + + "github.com/pkg/errors" + "golang.org/x/crypto/ssh" +) + +// ExecRemoteCommand takes a ssh client connection and a command to run and executes the +// command on the specified client. The function returns the Stdout from the client or the Stderr +func ExecRemoteCommand(dial *ssh.Client, run string) (string, error) { + sess, err := dial.NewSession() // new ssh client session + if err != nil { + return "", err + } + defer sess.Close() + + var buffer bytes.Buffer + var bufferErr bytes.Buffer + sess.Stdout = &buffer // output from client funneled into buffer + sess.Stderr = &bufferErr // err form client funneled into buffer + if err := sess.Run(run); err != nil { // run the command on the ssh client + return "", errors.Wrapf(err, bufferErr.String()) + } + out := buffer.String() // output from command + return out, nil +} |