Example #1
0
//TODO Do not return  string, also return error
func Execute(client *ssh.ClientConn, command string) string {
	// Each ClientConn can support multiple interactive sessions,
	// represented by a Session.
	defer client.Close()
	// Create a session
	session, err := client.NewSession()
	if err != nil {
		log.Fatalf("unable to create session: %s", err)

	}
	defer session.Close()
	// Set up terminal modes
	modes := ssh.TerminalModes{
		ECHO:          0,     // disable echoing
		TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
		TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud

	}
	// Request pseudo terminal
	if err := session.RequestPty("xterm", 80, 40, modes); err != nil {
		log.Fatalf("request for pseudo terminal failed: %s", err)

	}

	var b bytes.Buffer
	session.Stdout = &b
	if err := session.Run(command); err != nil {
		session.Stderr = &b
		//return "\033[31mError: '" + command + "' failed to run\033[0m \n"
	}
	return ("\033[31m" + b.String() + "\033[0m")

}