运维安装命令执行
146字小于1分钟
2025-02-04
package main
import (
"bytes"
"fmt"
"os"
"os/exec"
"strings"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: go run main.go <command>")
return
}
cmd := os.Args[1]
if strings.Contains(strings.ToLower(cmd), "rm") || strings.Contains(strings.ToLower(cmd), "mv") {
fmt.Println("Error: Refusing to execute command '", cmd, "' because it contains 'rm' or 'mv'")
return
}
execCommand(cmd)
}
func execCommand(cmd string) {
// 创建一个新的命令
cmdObj := exec.Command("bash", "-c", cmd)
// 获取命令的输出
var out bytes.Buffer
var stderr bytes.Buffer
cmdObj.Stdout = &out
cmdObj.Stderr = &stderr
// 执行命令
err := cmdObj.Run()
if err != nil {
fmt.Printf("Error executing command '%s': %v\n", cmd, err)
fmt.Printf("Error details: %s\n", stderr.String())
return
}
// 打印命令的输出
fmt.Printf("Output of command '%s':\n%s\n", cmd, out.String())
}