Dans Go, exec.Command() offre un moyen pratique d'exécuter des commandes externes. Cependant, la gestion de la redirection des entrées peut être difficile. Cette discussion explore comment utiliser exec.Command() pour exécuter la commande /sbin/iptables-restore < /etc/iptables.conf.
Initialement, tente de configurer la commande avec < et &Lt ; /etc/iptables.conf a échoué. Le transfert du nom du fichier via stdin n'a pas non plus fonctionné. Au lieu de cela, pour rediriger l'entrée vers stdin, il est nécessaire de lire d'abord le contenu du fichier d'entrée, /etc/iptables.conf.
Voici comment y parvenir :
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) } }
Cette approche nous permet de lire le contenu du fichier, de le diriger vers le stdin de la commande, puis de démarrer la commande avec la redirection d'entrée souhaitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!