带有输入重定向的 exec.Command
要从 Go 执行 bash 命令,exec.Command() 提供了一个简单的解决方案。然而,将输入重定向到命令可能是一个挑战。
考虑需要使用命令“/sbin/iptables-restore /iptables.conf”来更新 IPTables。尝试使用 exec.Command() 调用此命令已被证明是不成功的。
为了解决此问题,采用了提供文件名作为 cmd.StdinPipe() 输入的策略:
stdin, err := cmd.StdinPipe() if err != nil { log.Fatal(err) } err = cmd.Start() if err != nil { log.Fatal(err) } io.WriteString(stdin, "/etc/iptables.conf")
然而,这种方法仍然无效。一个可行的解决方案是读取“/etc/iptables.conf”的内容并将其写入 cmd.StdinPipe():
package main import ( "io" "io/ioutil" "log" "os/exec" ) func main() { bytes, err := ioutil.ReadFile("/etc/iptables.conf") if err != nil { log.Fatal(err) } cmd := exec.Command("/sbin/iptables-restore") stdin, err := cmd.StdinPipe() if err != nil { log.Fatal(err) } err = cmd.Start() if err != nil { log.Fatal(err) } _, err = io.WriteString(stdin, string(bytes)) if err != nil { log.Fatal(err) } }
以上是对于像'iptables-restore”这样的命令,如何正确地将输入重定向到 Go 中的'exec.Command”?的详细内容。更多信息请关注PHP中文网其他相关文章!