ssh: run commands through sh -c if sh is present

This commit is contained in:
Michael Stapelberg 2018-06-23 16:14:33 +02:00
parent b99b39b334
commit 05c84e7002

8
ssh.go
View File

@ -150,7 +150,13 @@ func (s *session) request(req *ssh.Request) error {
return scpSink(s.channel, req, cmdline)
}
cmd := exec.Command(cmdline[0], cmdline[1:]...)
var cmd *exec.Cmd
if _, err := exec.LookPath("sh"); err == nil {
cmd = exec.Command("sh", "-c", string(req.Payload[4:]))
} else {
cmd = exec.Command(cmdline[0], cmdline[1:]...)
}
log.Printf("Starting cmd %q", cmd.Args)
cmd.Env = expandPath(s.env)
cmd.SysProcAttr = &syscall.SysProcAttr{}