command_helper.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package command
  2. import (
  3. "bufio"
  4. "context"
  5. "fmt"
  6. "io/ioutil"
  7. "os/exec"
  8. "time"
  9. )
  10. func OnlyExec(cmdStr string) {
  11. cmd := exec.Command("/bin/bash", "-c", cmdStr)
  12. stdout, err := cmd.StdoutPipe()
  13. if err != nil {
  14. return
  15. }
  16. defer stdout.Close()
  17. if err := cmd.Start(); err != nil {
  18. return
  19. }
  20. cmd.Wait()
  21. return
  22. }
  23. func ExecResultStrArray(cmdStr string) []string {
  24. cmd := exec.Command("/bin/bash", "-c", cmdStr)
  25. stdout, err := cmd.StdoutPipe()
  26. if err != nil {
  27. fmt.Println(err)
  28. return nil
  29. }
  30. defer stdout.Close()
  31. if err = cmd.Start(); err != nil {
  32. fmt.Println(err)
  33. return nil
  34. }
  35. // str, err := ioutil.ReadAll(stdout)
  36. networklist := []string{}
  37. outputBuf := bufio.NewReader(stdout)
  38. for {
  39. output, _, err := outputBuf.ReadLine()
  40. if err != nil {
  41. if err.Error() != "EOF" {
  42. fmt.Printf("Error :%s\n", err)
  43. }
  44. break
  45. }
  46. networklist = append(networklist, string(output))
  47. }
  48. cmd.Wait()
  49. return networklist
  50. }
  51. func ExecResultStr(cmdStr string) string {
  52. cmd := exec.Command("/bin/bash", "-c", cmdStr)
  53. println(cmd.String())
  54. stdout, err := cmd.StdoutPipe()
  55. if err != nil {
  56. fmt.Println(err)
  57. return ""
  58. }
  59. defer stdout.Close()
  60. if err := cmd.Start(); err != nil {
  61. fmt.Println(err)
  62. return ""
  63. }
  64. str, err := ioutil.ReadAll(stdout)
  65. cmd.Wait()
  66. if err != nil {
  67. fmt.Println(err)
  68. return ""
  69. }
  70. return string(str)
  71. }
  72. // 执行 lsblk 命令
  73. func ExecLSBLK() []byte {
  74. output, err := exec.Command("lsblk", "-O", "-J", "-b").Output()
  75. if err != nil {
  76. fmt.Println("lsblk", err)
  77. return nil
  78. }
  79. return output
  80. }
  81. // 执行 lsblk 命令
  82. func ExecLSBLKByPath(path string) []byte {
  83. output, err := exec.Command("lsblk", path, "-O", "-J", "-b").Output()
  84. if err != nil {
  85. fmt.Println("lsblk", err)
  86. return nil
  87. }
  88. return output
  89. }
  90. // exec smart
  91. func ExecSmartCTLByPath(path string) []byte {
  92. timeout := 3
  93. ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout)*time.Second)
  94. defer cancel()
  95. output, err := exec.CommandContext(ctx, "smartctl", "-a", path, "-j").Output()
  96. if err != nil {
  97. fmt.Println("smartctl", err)
  98. return nil
  99. }
  100. return output
  101. }
  102. func ExecEnabledSMART(path string) {
  103. exec.Command("smartctl", "-s on", path).Output()
  104. }