--- a/ssh/command.go Fri May 03 07:19:45 2019 -0500
+++ b/ssh/command.go Fri May 03 08:51:59 2019 -0500
@@ -2,11 +2,15 @@
"github.com/alecthomas/kong"
"github.com/kballard/go-shellquote"
+ log "github.com/sirupsen/logrus" + "golang.org/x/crypto/ssh" "bitbucket.org/rw_grim/hgkeeper/hg"
@@ -35,6 +39,61 @@
+func (c *Command) run(conn ssh.Channel, req *ssh.Request) error { + if err := c.cmd.Wait(); err != nil { + log.Warnf("failed running command : %v", err) + log.Info("finished command") + stdinWriter, err := c.cmd.StdinPipe() + stdoutReader, err := c.cmd.StdoutPipe() + stderrReader, err := c.cmd.StderrPipe() + // now wire up stdin/stdout/stderr + io.Copy(stdinWriter, conn) + io.Copy(conn, stdoutReader) + io.Copy(conn.Stderr(), stderrReader) + if err := c.cmd.Start(); err != nil { func parseCommand(cmd string) (cli, string, error) {
--- a/ssh/server.go Fri May 03 07:19:45 2019 -0500
+++ b/ssh/server.go Fri May 03 08:51:59 2019 -0500
@@ -2,9 +2,7 @@
log "github.com/sirupsen/logrus"
"golang.org/x/crypto/ssh"
@@ -120,48 +118,11 @@
- if err := cmd.cmd.Wait(); err != nil {
- log.Warnf("failed running command : %v", err)
- log.Info("finished command")
+ if err := cmd.run(conn, req); err != nil { + log.Warnf("failed to run command: %v", err) - stdinWriter, _ := cmd.cmd.StdinPipe()
- stdoutReader, _ := cmd.cmd.StdoutPipe()
- stderrReader, _ := cmd.cmd.StderrPipe()
- // now wire up stdin/stdout/stderr
- io.Copy(stdinWriter, conn)
- io.Copy(conn, stdoutReader)
- io.Copy(conn.Stderr(), stderrReader)
- log.Warnf("running %#v", cmd.cmd.Args)
- if err := cmd.cmd.Start(); err != nil {
- log.Warnf("failed to start command: %v", err)
- log.Info("command started")
log.Debugf("unsupported request: %s", req.Type)