36 lines
796 B
Go
36 lines
796 B
Go
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
|
|
}
|