我正在尝试在 Go 中运行以下代码。我尝试过以下两种方法:
out, err := exec.Command("sh", "-c", "tcpdump -i ens0 host 192.168.1.100 -F ./testfile").Output()
fmt.Println(string(out)) // Prints nothing
fmt.Println(err) // exit status 1
我也尝试过替换sh为/bin/bash. 我还尝试了以下方法,有和没有sh作为第一个参数:
out, err := exec.Command("tcpdump", "-i", "ens0", "host", "192.168.1.100", "-F", "./testfile").Output()
fmt.Println(string(out)) // Prints nothing
fmt.Println(err) // exit status 1
这些都不起作用。有人能看到我做错了什么吗?我也尝试过这个 go 包"github.com/kami-zh/go-capturer"来读取 stderr,但它再次没有打印任何内容。
通常我必须使用从 shellsudo执行tcpdump,因此我构建了 go 二进制文件并以 root 用户身份执行它。
呼啦一阵风
相关分类