Commit 7ef4e4a4 authored by 陈子龙's avatar 陈子龙

自动化运维 立即执行 fix

parent 76aa9d7b
......@@ -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
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment