46 lines
904 B
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
|
|
}
|