我正在尝试使用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
}