123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package command
- import (
- "bufio"
- "context"
- "fmt"
- "io/ioutil"
- "os/exec"
- "time"
- )
- func OnlyExec(cmdStr string) {
- cmd := exec.Command("/bin/bash", "-c", cmdStr)
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return
- }
- defer stdout.Close()
- if err := cmd.Start(); err != nil {
- return
- }
- cmd.Wait()
- return
- }
- 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)
- var 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))
- }
- cmd.Wait()
- return networklist
- }
- func ExecResultStr(cmdStr string) 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 ""
- }
- str, err := ioutil.ReadAll(stdout)
- cmd.Wait()
- if err != nil {
- fmt.Println(err)
- return ""
- }
- 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
- }
- //exec smart
- func ExecSmartCTLByPath(path string) []byte {
- timeout := 3
- ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout)*time.Second)
- defer cancel()
- output, err := exec.CommandContext(ctx, "smartctl", "-a", path, "-j").Output()
- if err != nil {
- fmt.Println("smartctl", err)
- return nil
- }
- return output
- }
- func ExecEnabledSMART(path string) {
- exec.Command("smartctl", "-s on", path).Output()
- }
|