Go - os / exec命令:信号:断管

时间:2014-10-04 15:02:47

标签: go

我正在尝试使用command函数执行命令,但由于某些原因,我经常会遇到此错误(并非所有时间)

c2 wait client 82.121.xxx.xxx, server xxx.xxx.x.xx, err signal: broken pipe

从shell执行命令如下所示:

echo "password" | nmap -A tcp/443 --stdin -a $clientIP -D $serverIP -v

以下是我到目前为止的情况。基本上我运行第一个(至少那是我认为我正在做的)并提供输出作为第二个命令的输入。知道什么是错的,我该如何调试这个问题?

c1 := exec.Command("echo", "password")
cmd2 := "nmap -A tcp/443 --stdin -a " + clientIP + " -D " + serverIP + " -v"

parts := strings.Fields(cmd2)
head := parts[0]
parts = parts[1:len(parts)]
c2 := exec.Command(head, parts...)

c2.Stdin, err = c1.StdoutPipe()
if err != nil {
    log.Errorf("client %v, server %v, err %v",
        clientIP, serverIP, err)
    return err
}

c2.Stdout = os.Stdout
err = c2.Start()
if err != nil {
    log.Errorf("c2 start client %v, server %v, err %v",
        clientIP, serverIP, err)
}
err = c1.Run()
if err != nil {
    log.Errorf("c1 start client %v, server %v, err %v",
        clientIP, serverIP, err)
}
err = c2.Wait()
if err != nil {
    log.Errorf("c2 wait client %v, server %v, err %v",
        clientIP, serverIP, err)
    return
}

0 个答案:

没有答案