运维安装命令执行
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())
}