You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
739 B
37 lines
739 B
9 months ago
|
package utils
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"errors"
|
||
|
"io"
|
||
|
"os/exec"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func RunCommand(cmdString string, reader io.Reader, ifout bool) ([]byte, error) {
|
||
|
// fmt.Println(cmdString)
|
||
|
cmds := strings.Split(cmdString, " ")
|
||
|
cmd2 := exec.Command(cmds[0], cmds[1:]...)
|
||
|
if reader != nil {
|
||
|
cmd2.Stdin = reader //bytes.NewReader(*stdin)
|
||
|
}
|
||
|
var stderr bytes.Buffer
|
||
|
cmd2.Stderr = &stderr //命令输出的错误1.
|
||
|
var stdout bytes.Buffer
|
||
|
if ifout {
|
||
|
cmd2.Stdout = &stdout //命令的输出 1.
|
||
|
}
|
||
|
err := cmd2.Run()
|
||
|
s := stderr.String() //得到命令输出的错误2.
|
||
|
if ifout {
|
||
|
sout := stdout.Bytes() //得到命令的输出 2.
|
||
|
if len(sout) > 0 {
|
||
|
return sout, err
|
||
|
}
|
||
|
}
|
||
|
if s != "" {
|
||
|
err = errors.New(s)
|
||
|
}
|
||
|
return nil, err
|
||
|
}
|