From 40724686ac751711205ffb7a0da109ec77adb387 Mon Sep 17 00:00:00 2001 From: Sandeep Shewalkar <sandeepss@mkcl.org> Date: Sat, 3 Mar 2018 14:38:23 +0530 Subject: [PATCH] Diskdetails changes wmic full path added in command --- diskdetailshelper/diskdetails.go | 17 +++++++++++------ diskdetailshelper/gopsutil/disk_windows.go | 10 ++++++++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/diskdetailshelper/diskdetails.go b/diskdetailshelper/diskdetails.go index 00f6e3f..aa9f5e6 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 e4642f6..4b35e42 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() -- GitLab