diff --git a/diskdetailshelper/diskdetails.go b/diskdetailshelper/diskdetails.go index 00f6e3fe93c82ac703764d025c9526b9aba6e484..aa9f5e69ad5f594992b25aa0b12f6eef21bc250d 100644 --- a/diskdetailshelper/diskdetails.go +++ b/diskdetailshelper/diskdetails.go @@ -3,6 +3,7 @@ package diskdetailshelper import ( "bytes" "errors" + "os" "os/exec" "regexp" "runtime" @@ -19,6 +20,8 @@ import ( "github.com/shirou/gopsutil/mem" ) +const WMIC_RELATIVE_PATH = "\\System32\\wbem\\wmic" + // UsageStat struct contains serial number and disk stats type UsageStat struct { SerialNumber string `json:"serialNumber"` @@ -127,7 +130,8 @@ func AnalyseDisk() (UsageStat, error) { // GetDiskDetails returns disk details for windows OS func GetDiskDetails() ([]DiskStats, error) { diskStats := []DiskStats{} - cmd := exec.Command("wmic") + windowsDirPath := os.Getenv("SYSTEMROOT") + cmd := exec.Command(windowsDirPath + WMIC_RELATIVE_PATH) cmd.Stdin = strings.NewReader("logicaldisk get caption,drivetype,freespace,size") var out bytes.Buffer @@ -205,18 +209,19 @@ func GetCPUUtilizationPercent(interval time.Duration, percpu bool) ([]float64, e // GetCPUPhysicalID returns CPU Physical ID or empty string func GetCPUPhysicalID() (string, error) { cpuPhysicalID := "" - os := "" + serverOS := "" osInfo, err := host.Info() if err != nil { logginghelper.LogError("error occured while getting OS details", err) // return cpuPhysicalID, err - os = runtime.GOOS + serverOS = runtime.GOOS } else { - os = osInfo.OS + serverOS = osInfo.OS } - switch os { + switch serverOS { case "windows": - cmd := exec.Command("wmic", "CPU", "get", "ProcessorId") + windowsDirPath := os.Getenv("SYSTEMROOT") + cmd := exec.Command(windowsDirPath+WMIC_RELATIVE_PATH, "CPU", "get", "ProcessorId") // cmd.Stdin = strings.NewReader("CPU get ProcessorId") var out bytes.Buffer diff --git a/diskdetailshelper/gopsutil/disk_windows.go b/diskdetailshelper/gopsutil/disk_windows.go index e4642f6e8dca41f495b05adbfe331c231d7b46b2..4b35e420b9a1784166852f75b8becedc284d524a 100644 --- a/diskdetailshelper/gopsutil/disk_windows.go +++ b/diskdetailshelper/gopsutil/disk_windows.go @@ -4,6 +4,7 @@ package gopsutil import ( "bytes" + "os" "regexp" "unsafe" @@ -23,6 +24,8 @@ var ( provGetVolumeInformation = Modkernel32.NewProc("GetVolumeInformationW") ) +const WMIC_RELATIVE_PATH = "\\System32\\wbem\\wmic" + var ( FileFileCompression = int64(16) // 0x00000010 FileReadOnlyVolume = int64(524288) // 0x00080000 @@ -197,8 +200,10 @@ func GetDiskSerialNumber(name string) string { serialNumberArray := []string{} serialNumberMap := make(map[string]bool) + windowsDirPath := os.Getenv("SYSTEMROOT") cmd1 := &exec.Cmd{} - cmd1 = exec.Command("wmic", "path", "win32_physicalmedia", "get", "SerialNumber") + cmd1 = exec.Command(windowsDirPath+WMIC_RELATIVE_PATH, "path", "win32_physicalmedia", "get", "SerialNumber") + var out1 bytes.Buffer cmd1.Stdout = &out1 commandError := cmd1.Run() @@ -217,7 +222,8 @@ func GetDiskSerialNumber(name string) string { } cmd2 := &exec.Cmd{} - cmd2 = exec.Command("wmic", "diskdrive", "get", "serialnumber") + cmd2 = exec.Command(windowsDirPath+WMIC_RELATIVE_PATH, "diskdrive", "get", "serialnumber") + var out2 bytes.Buffer cmd2.Stdout = &out2 commandError = cmd2.Run()