command_helper.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. var 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. stdout, err := cmd.StdoutPipe()
  54. if err != nil {
  55. fmt.Println(err)
  56. return ""
  57. }
  58. defer stdout.Close()
  59. if err := cmd.Start(); err != nil {
  60. fmt.Println(err)
  61. return ""
  62. }
  63. str, err := ioutil.ReadAll(stdout)
  64. cmd.Wait()
  65. if err != nil {
  66. fmt.Println(err)
  67. return ""
  68. }
  69. return string(str)
  70. }
  71. //执行 lsblk 命令
  72. func ExecLSBLK() []byte {
  73. output, err := exec.Command("lsblk", "-O", "-J", "-b").Output()
  74. if err != nil {
  75. fmt.Println("lsblk", err)
  76. return nil
  77. }
  78. return output
  79. }
  80. //执行 lsblk 命令
  81. func ExecLSBLKByPath(path string) []byte {
  82. output, err := exec.Command("lsblk", path, "-O", "-J", "-b").Output()
  83. if err != nil {
  84. fmt.Println("lsblk", err)
  85. return nil
  86. }
  87. return output
  88. }
  89. //exec smart
  90. func ExecSmartCTLByPath(path string) []byte {
  91. timeout := 3
  92. ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout)*time.Second)
  93. defer cancel()
  94. output, err := exec.CommandContext(ctx, "smartctl", "-a", path, "-j").Output()
  95. if err != nil {
  96. fmt.Println("smartctl", err)
  97. return nil
  98. }
  99. return output
  100. }
  101. func ExecEnabledSMART(path string) {
  102. exec.Command("smartctl", "-s on", path).Output()
  103. }