package dns import ( "bytes" "fmt" "os/exec" "strings" "k8s.io/klog/v2" ) func Execute(shell string, arg ...string) (bool, error) { var outb, errb bytes.Buffer cmd := exec.Command(shell, arg...) cmd.Dir = AcmeDir cmd.Stdout = &outb cmd.Stderr = &errb klog.Infof("cmd: %s\n", cmd.String()) err := cmd.Run() outstr := strings.TrimSuffix(outb.String(), "\n") errstr := strings.TrimSuffix(errb.String(), "\n") klog.Infof("out:\n%s\n", outstr) if err != nil { klog.Errorf("Script returned error:\nerr:\n") klog.Errorf("%s\n============\n", err) return false, err } if errb.String() != "" { klog.Infof("stderr:\n") klog.Errorf("%s\n============\n", errstr) return false, fmt.Errorf("stderr:\n%q", errstr) } klog.Infof("Script returned success\n") return true, nil }