cert-manager-webhook-sthome/sthome/shell.go

46 lines
904 B
Go

package sthome
import (
"os"
"os/exec"
//"bytes"
"k8s.io/klog/v2"
)
type saveOutput struct {
buffer []byte
}
func (so *saveOutput) Write(p []byte) (n int, err error) {
so.buffer = append(so.buffer, p...)
return os.Stdout.Write(p)
}
func Execute(shell string, command []string) (bool, error) {
var so saveOutput
//var buffer bytes.Buffer
/*
currentUser, err := user.Current()
if err != nil {
klog.Fatalf("CZ: Unable to get current user: %s", err)
}
klog.Infof("CZ: Executing as user %s : %s %v\n", currentUser.Name, shell, command)
*/
cmd := &exec.Cmd{
Path: shell,
Args: command,
}
cmd.Stdin = os.Stdin
cmd.Stdout = &so //&buffer
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
klog.Errorf("Script return error: %s\n%s\n", err, string(so.buffer))
return false, err
}
klog.Infof("Script returned success:\n%s\n", string(so.buffer))
return true, nil
}