123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package command
- import (
- "bufio"
- "fmt"
- "io/ioutil"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- )
- func OnlyExec(cmdStr string) {
- cmd := exec.Command("/bin/bash", "-c", cmdStr)
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- fmt.Println(err)
- return
- }
- defer stdout.Close()
- if err := cmd.Start(); err != nil {
- fmt.Println(err)
- return
- }
- if err := cmd.Wait(); err != nil {
- fmt.Println(err)
- }
- }
- func ExecResultStrArray(cmdStr string) []string {
- cmd := exec.Command("/bin/bash", "-c", cmdStr)
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- fmt.Println(err)
- return nil
- }
- defer stdout.Close()
- if err = cmd.Start(); err != nil {
- fmt.Println(err)
- return nil
- }
- // str, err := ioutil.ReadAll(stdout)
- networklist := []string{}
- outputBuf := bufio.NewReader(stdout)
- for {
- output, _, err := outputBuf.ReadLine()
- if err != nil {
- if err.Error() != "EOF" {
- fmt.Printf("Error :%s\n", err)
- }
- break
- }
- networklist = append(networklist, string(output))
- }
- if err := cmd.Wait(); err != nil {
- fmt.Println(err)
- }
- return networklist
- }
- func ExecResultStr(cmdStr string) string {
- cmd := exec.Command("/bin/bash", "-c", cmdStr)
- println(cmd.String())
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- fmt.Println(err)
- return ""
- }
- defer stdout.Close()
- if err := cmd.Start(); err != nil {
- fmt.Println(err)
- return ""
- }
- str, err := ioutil.ReadAll(stdout)
- if err != nil {
- fmt.Println(err)
- return ""
- }
- if err := cmd.Wait(); err != nil {
- fmt.Println(err)
- }
- return string(str)
- }
- // 执行 lsblk 命令
- func ExecLSBLK() []byte {
- output, err := exec.Command("lsblk", "-O", "-J", "-b").Output()
- if err != nil {
- fmt.Println("lsblk", err)
- return nil
- }
- return output
- }
- // 执行 lsblk 命令
- func ExecLSBLKByPath(path string) []byte {
- output, err := exec.Command("lsblk", path, "-O", "-J", "-b").Output()
- if err != nil {
- fmt.Println("lsblk", err)
- return nil
- }
- return output
- }
- func ExecuteScripts(scriptDirectory string) {
- if _, err := os.Stat(scriptDirectory); os.IsNotExist(err) {
- fmt.Printf("No post-start scripts at %s\n", scriptDirectory)
- return
- }
- files, err := os.ReadDir(scriptDirectory)
- if err != nil {
- fmt.Printf("Failed to read from script directory %s: %s\n", scriptDirectory, err.Error())
- return
- }
- for _, file := range files {
- if file.IsDir() {
- continue
- }
- scriptFilepath := filepath.Join(scriptDirectory, file.Name())
- f, err := os.Open(scriptFilepath)
- if err != nil {
- fmt.Printf("Failed to open script file %s: %s\n", scriptFilepath, err.Error())
- continue
- }
- f.Close()
- scanner := bufio.NewScanner(f)
- scanner.Scan()
- shebang := scanner.Text()
- interpreter := "/bin/sh"
- if strings.HasPrefix(shebang, "#!") {
- interpreter = shebang[2:]
- }
- cmd := exec.Command(interpreter, scriptFilepath)
- fmt.Printf("Executing post-start script %s using %s\n", scriptFilepath, interpreter)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- err = cmd.Run()
- if err != nil {
- fmt.Printf("Failed to execute post-start script %s: %s\n", scriptFilepath, err.Error())
- }
- }
- fmt.Println("Finished executing post-start scripts.")
- }
|