Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
MKCLOS
Core Development Platform
coreospackage
Commits
f0ee9b48
Commit
f0ee9b48
authored
7 years ago
by
Onkar Sutar
Browse files
Options
Downloads
Patches
Plain Diff
Multiple HDD serial number
parent
4f69a61c
Branches
Branches containing commit
1 merge request
!40
Multiple HDD serial number
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
diskdetailshelper/gopsutil/disk_windows.go
+40
-21
diskdetailshelper/gopsutil/disk_windows.go
with
40 additions
and
21 deletions
diskdetailshelper/gopsutil/disk_windows.go
+
40
−
21
View file @
f0ee9b48
...
...
@@ -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
[
:
],
","
)
}
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets