func (c *SSHConn) ExecPath(cmd, path string) (out []byte, err error) { var session *ssh.Session session, err = c.client.NewSession() if err != nil { log.Fatal("Failed to create session: " + err.Error()) } defer session.Close() envVars := "" if c.env != nil { for name, value := range c.env { envVars = envVars + name + "=\"" + value + "\" " /* TODO: This should be the proper way to set the environment, but fails for some reason * Investigate why and possibly send pull-request to maintainer err = session.Setenv(name, value) if err != nil { log.Fatal("Failed to set environment: " + err.Error()) } */ } } cmd = envVars + cmd if path != "" { cmd = "cd " + path + " && " + cmd } return session.CombinedOutput(cmd) }