From e0547ee9d90262b9b929a9de56660a2f9f2d1834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BE=99?= Date: Fri, 7 Jul 2023 11:19:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=E8=BF=90=E7=BB=B4?= =?UTF-8?q?=20=E7=AB=8B=E5=8D=B3=E6=89=A7=E8=A1=8C=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/task_manage.go | 87 +++++++++++++++----------------------- 1 file changed, 33 insertions(+), 54 deletions(-) diff --git a/src/service/task_manage.go b/src/service/task_manage.go index 2a502a4..90a30ed 100644 --- a/src/service/task_manage.go +++ b/src/service/task_manage.go @@ -258,64 +258,43 @@ func (t *TaskManageSvc) ExecScript(req request.ExecScriptReq) (err error) { if err != nil { fmt.Println("执行出错:", err) fmt.Println("stdout:", stdout) - //return nil, resp.CmdExecError.WithError(err) + return resp.CmdExecError.WithError(err) + } + if err = cmd.Start(); err != nil { + fmt.Println("执行出错2:", err) + fmt.Println("stdout:", stdout) + return resp.CmdExecError.WithError(err) } - readout := bufio.NewReader(stdout) - go func() { - GetOutput(readout) - }() - //执行命令 - //err = cmd.Run() - //if err != nil { - // cmd.Stderr = os.Stderr - // fmt.Println(cmd.Stderr) - // err = resp.FileExecError.WithError(err) - // return - //} + outputBuf := bufio.NewReader(stdout) + for { + line, err2 := outputBuf.ReadString('\n') + if err2 != nil || io.EOF == err2 { + break + } + fmt.Println("输出:", line) + } + cmd.Wait() + fmt.Println("执行成功") fmt.Println("stdout:", stdout) - - //cmd.Stdout = os.Stdout - //cmd.Stderr = os.Stderr - //stdout, err := cmd.StdoutPipe() - //if err != nil { - // fmt.Println("执行出错:", err) - // fmt.Println("stdout:", stdout) - // return nil, resp.CmdExecError.WithError(err) - //} - //if err = cmd.Start(); err != nil { // 运行命令 - // log.Fatal(err) - //} - - //outputBuf := bufio.NewReader(stdout) - //output, isPrefix, err := outputBuf.ReadLine() - //output, err := cmd.Output() - //if err != nil { - // err = resp.CmdExecError.WithError(err) - // return - //} - //fmt.Println(string(output)) - //data["step"] = isPrefix - //data["output"] = string(output) - //data["output"] = string(output) return nil } -func GetOutput(reader *bufio.Reader) { - var sumOutput string //统计屏幕的全部输出内容 - outputBytes := make([]byte, 200) - for { - n, err := reader.Read(outputBytes) //获取屏幕的实时输出(并不是按照回车分割,所以要结合sumOutput) - if err != nil { - if err == io.EOF { - break - } - fmt.Println(err) - sumOutput += err.Error() - } - output := string(outputBytes[:n]) - fmt.Println("输出屏幕内容:", output) //输出屏幕内容 - sumOutput += output - } -} +//func GetOutput(reader *bufio.Reader) { +// var sumOutput string //统计屏幕的全部输出内容 +// outputBytes := make([]byte, 200) +// for { +// n, err := reader.Read(outputBytes) //获取屏幕的实时输出(并不是按照回车分割,所以要结合sumOutput) +// if err != nil { +// if err == io.EOF { +// break +// } +// fmt.Println(err) +// sumOutput += err.Error() +// } +// output := string(outputBytes[:n]) +// fmt.Println("输出屏幕内容:", output) //输出屏幕内容 +// sumOutput += output +// } +//} -- 2.26.0