diff --git a/agent-go/executor/CommandExecutor.go b/agent-go/executor/CommandExecutor.go index 615d169..3c65b4d 100644 --- a/agent-go/executor/CommandExecutor.go +++ b/agent-go/executor/CommandExecutor.go @@ -6,6 +6,7 @@ import ( "bytes" "fmt" "os/exec" + "strings" ) type ExecutionMessage struct { @@ -54,42 +55,20 @@ func Execute(em *ExecutionMessage) ([]string, error) { func PipeLineCommandExecutor(pipeLineCommand [][]string) ([]string, error) { - var cmds []*exec.Cmd - - // 创建每个命令对象,并将前一个命令的标准输出连接到当前命令的标准输入 - for i, partOfCommand := range pipeLineCommand { - cmd := exec.Command(partOfCommand[0], partOfCommand[1:]...) - if i > 0 { - prevCmd := cmds[i-1] - out, err := prevCmd.StdoutPipe() - if err != nil { - log.ErrorF("Pipeline command error happened! Command is => %v, Error is %v", partOfCommand, err) - return nil, err - } - cmd.Stdin = out + var output []byte + var err error + for i, command := range pipeLineCommand { + cmd := exec.Command(command[0], command[1:]...) + cmd.Stdin = bytes.NewReader(output) + output, err = cmd.Output() + if err != nil { + return strings.Split(string(output), "\n"), err + } + if i == len(pipeLineCommand)-1 { + return strings.Split(string(output), "\n"), nil } - cmds = append(cmds, cmd) } - - // 执行最后一个命令,并获取其输出 - lastCmd := cmds[len(cmds)-1] - - var out bytes.Buffer - lastCmd.Stdout = &out - lastCmd.Stderr = &out - err := lastCmd.Run() - - scanner := bufio.NewScanner(&out) - var result []string - for scanner.Scan() { - result = append(result, scanner.Text()) - } - - if err != nil { - return nil, err - } - - return result, nil + return []string{}, nil } func MultiLineCommandExecutor(multiLineCommandExecutor [][]string) ([]string, error) { diff --git a/agent-go/tmp/executor-om-pipeline.json b/agent-go/tmp/executor-om-pipeline.json index 2bf979e..55c3756 100644 --- a/agent-go/tmp/executor-om-pipeline.json +++ b/agent-go/tmp/executor-om-pipeline.json @@ -2,7 +2,7 @@ "uuid": "2023-03-27 14:38:49", "init_time": "2023-03-27T14:38:49.8162801+08:00", "type": "EXECUTOR", - "content": "{\n \"needResultReplay\": true,\n \"durationTask,default:false\": false,\n \"type\": \"pipeline\",\n \"singleLineCommand\": null,\n \"multiLineCommand\": null,\n \"pipeLineCommand\": [[\"ls\",\"-la\"],[\"grep\",\"-c\", \"dev\"]],\n \"resultKey\": \"output\"\n}\n", + "content": "{\n \"needResultReplay\": true,\n \"durationTask,default:false\": false,\n \"type\": \"pipeline\",\n \"singleLineCommand\": null,\n \"multiLineCommand\": null,\n \"pipeLineCommand\": [[\"ls\",\"-la\"],[\"grep\", \"dev\"]],\n \"resultKey\": \"output\"\n}\n", "result": "", "ac_time": "0001-01-01T00:00:00Z" }