Commit a1c028be authored by Ajit Jagtap's avatar Ajit Jagtap
Browse files

Merge branch 'Multiple_HDD_SerialNumber' into 'master'

Multiple HDD serial number

See merge request !40
parents 4f69a61c f0ee9b48
Branches
1 merge request!40Multiple HDD serial number
Showing with 40 additions and 21 deletions
......@@ -8,7 +8,6 @@ import (
"unsafe"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/coreospackage/logginghelper"
"github.com/shirou/gopsutil/host"
"os/exec"
"strings"
......@@ -192,32 +191,52 @@ func RemovableDriveConnected() (bool, error) {
return false, nil
}
// GetDiskSerialNumber returns Serial Number of given device or empty string
// GetDiskSerialNumber returns all Serial Number of given device or empty string
func GetDiskSerialNumber(name string) string {
info, err := host.Info()
if err != nil {
logginghelper.LogError("GetDiskSerialNumber Host Info() Err : ", err)
// return ""
}
cmd := &exec.Cmd{}
if err == nil && (strings.Contains(info.Platform, "Windows 7") || strings.Contains(info.Platform, "Windows 10")) {
cmd = exec.Command("wmic", "diskdrive", "get", "serialnumber")
serialNumber := ""
serialNumberArray := []string{}
serialNumberMap := make(map[string]bool)
cmd1 := &exec.Cmd{}
cmd1 = exec.Command("wmic", "path", "win32_physicalmedia", "get", "SerialNumber")
var out1 bytes.Buffer
cmd1.Stdout = &out1
commandError := cmd1.Run()
if commandError != nil {
logginghelper.LogError("error occured while running wmic command", commandError)
} else {
cmd = exec.Command("wmic", "path", "win32_physicalmedia", "get", "SerialNumber")
re := regexp.MustCompile("[^\\s(SerialNumber)\\s\r\n]+[0-9 A-Z a-z]+")
diskSerialNumberList := re.FindAllString(out1.String(), -1)
if diskSerialNumberList == nil || len(diskSerialNumberList) <= 0 {
logginghelper.LogError("disk detailslist has no elements to show")
} else {
serialNumber = strings.TrimSpace(diskSerialNumberList[0])
serialNumberMap[serialNumber] = true
}
}
var out bytes.Buffer
cmd.Stdout = &out
commandError := cmd.Run()
cmd2 := &exec.Cmd{}
cmd2 = exec.Command("wmic", "diskdrive", "get", "serialnumber")
var out2 bytes.Buffer
cmd2.Stdout = &out2
commandError = cmd2.Run()
if commandError != nil {
logginghelper.LogError("error occured while running wmic command", commandError)
return ""
} else {
re := regexp.MustCompile("[^\\s(SerialNumber)\\s\r\n]+[0-9 A-Z a-z]+")
diskSerialNumberList := re.FindAllString(out2.String(), -1)
if diskSerialNumberList == nil || len(diskSerialNumberList) <= 0 {
logginghelper.LogError("disk detailslist has no elements to show")
} else {
serialNumber = strings.TrimSpace(diskSerialNumberList[0])
serialNumberMap[serialNumber] = true
}
}
re := regexp.MustCompile("[^\\s(SerialNumber)\\s\r\n]+[0-9 A-Z a-z]+")
diskSerialNumberList := re.FindAllString(out.String(), -1)
if diskSerialNumberList == nil || len(diskSerialNumberList) <= 0 {
logginghelper.LogError("disk detailslist has no elements to show")
return ""
for key := range serialNumberMap {
serialNumberArray = append(serialNumberArray, key)
}
return strings.TrimSpace(diskSerialNumberList[0])
return strings.Join(serialNumberArray[:], ",")
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment