diff --git a/src/service/task_manage.go b/src/service/task_manage.go index ea8b7ef48f3a342da7cae0b8ec27d1d96d9cb239..34be51dc2ecde5a2f907ab21df8c2c143dcf9179 100644 --- a/src/service/task_manage.go +++ b/src/service/task_manage.go @@ -253,45 +253,53 @@ func (t *TaskManageSvc) ExecScript(req request.ExecScriptReq) (err error) { cmd = exec.Command("ansible-playbook", "/etc/ansible/ansible.yml") } - //捕获标准输出 + //捕获正常日志 stdout, err := cmd.StdoutPipe() if err != nil { return resp.CmdExecError.WithError(err) } + //捕获异常日志 + stderr, err := cmd.StderrPipe() + if err != nil { + return resp.CmdExecError.WithError(err) + } + //执行cmd命令 if err = cmd.Start(); err != nil { return resp.CmdExecError.WithError(err) } + //获取正常/异常 输出流 outputBuf := bufio.NewReader(stdout) + readerr := bufio.NewReader(stderr) + + var out, outErr int for { - line, err2 := outputBuf.ReadString('\n') - if err2 != nil || io.EOF == err2 { - fmt.Println("捕获标准输出line:", line) - fmt.Println("捕获标准输出err:", err) - break + //逐行打印日志 + lineOut, err1 := outputBuf.ReadString('\n') + if err1 != nil || io.EOF == err1 { + fmt.Println("捕获标准输出line:", lineOut) + fmt.Println("捕获标准输出err:", err1) + out = 1 + //break + } else { + fmt.Println("输出正常日志:", lineOut) } - fmt.Println("输出:", line) - } - //捕获标准错误 - stderr, err := cmd.StderrPipe() - if err != nil { - fmt.Println("ERROR:", err) - os.Exit(1) - } - readerr := bufio.NewReader(stderr) - for { - line, err2 := readerr.ReadString('\n') + lineErr, err2 := readerr.ReadString('\n') if err2 != nil || io.EOF == err2 { - fmt.Println("捕获标准错误line:", line) + fmt.Println("捕获标准错误line:", lineErr) fmt.Println("捕获标准错误err:", err) + outErr = 1 + //break + } else { + fmt.Println("输出错误日志:", lineErr) + } + if out == 1 && outErr == 1 { break } - fmt.Println("输出错误:", line) } cmd.Wait() - fmt.Println("执行成功") - fmt.Println("stdout:", stdout) + fmt.Println("执行结束") return nil }