execute.go 649 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package helper
  2. import (
  3. "bytes"
  4. "errors"
  5. "fmt"
  6. "os/exec"
  7. "strings"
  8. )
  9. var ErrCommandEmpty = errors.New("command empty")
  10. func Execute(command string) ([]byte, []byte, error) {
  11. parts := strings.Split(command, " ")
  12. if len(parts) == 0 {
  13. return nil, nil, ErrCommandEmpty
  14. }
  15. var cmd *exec.Cmd
  16. if len(parts) == 1 {
  17. cmd = exec.Command(parts[0])
  18. } else {
  19. cmd = exec.Command(parts[0], parts[1:]...)
  20. }
  21. var stdout bytes.Buffer
  22. var stderr bytes.Buffer
  23. cmd.Stdout = &stdout
  24. cmd.Stderr = &stderr
  25. err := cmd.Run()
  26. if err != nil {
  27. return nil, nil, fmt.Errorf("execute failed: %w", err)
  28. }
  29. return stdout.Bytes(), stderr.Bytes(), err
  30. }