-
Notifications
You must be signed in to change notification settings - Fork 2
/
linux.go
79 lines (74 loc) · 2.03 KB
/
linux.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package machine
import (
"bytes"
"crypto/md5"
"fmt"
"os/exec"
)
func LinuxMachineOnlyID() string {
result := ""
err, productName := ShellScript("cat /sys/class/dmi/id/product_name")
if err == nil {
result += "###" + productName
}
err, productUuid := ShellScript("cat /sys/class/dmi/id/product_uuid")
if err == nil {
result += "###" + productUuid
}
err, productSerial := ShellScript("cat /sys/class/dmi/id/board_serial")
if err == nil {
result += "###" + productSerial
}
err, systemSerial := ShellScript("dmidecode -s system-serial-number")
if err == nil {
result += "###" + systemSerial
}
return MD5(result)
}
func LinuxMachineMustID() string {
result := ""
err, productName := ShellScript("cat /sys/class/dmi/id/product_name")
if err == nil {
result += "###" + productName
}
err, productUuid := ShellScript("cat /sys/class/dmi/id/product_uuid")
if err == nil {
result += "###" + productUuid
}
err, productSerial := ShellScript("cat /sys/class/dmi/id/board_serial")
if err == nil {
result += "###" + productSerial
}
err, systemSerial := ShellScript("dmidecode -s system-serial-number")
if err == nil {
result += "###" + systemSerial
}
//err, netMac := ShellScript("ip a | grep -A 1 \"$(ls /sys/class/net/ | grep -v \"`ls /sys/devices/virtual/net/`\")\" | grep ether | awk '{print $2}' | tr '\\n' ',' | sed 's/,$//'")
err, netMac := ShellScript("dmesg | grep eth | grep Express | awk '{print $NF}' | tr '\\n' ',' | sed 's/,$//'")
if err == nil {
result += "###" + netMac
}
err, diskUuid := ShellScript("ls /dev/disk/by-uuid | tr '\\n' ',' | sed 's/,$//'")
if err == nil {
result += "###" + diskUuid
}
return MD5(result)
}
func MD5(str string) string {
data := []byte(str)
has := md5.Sum(data)
md5str := fmt.Sprintf("%x", has)
return md5str
}
func ShellScript(command string) (error, string) {
result := ""
cmd := exec.Command("sh", "-c", command)
var stdout bytes.Buffer
cmd.Stdout = &stdout
err := cmd.Run()
if err != nil {
return err, result
}
result = string(stdout.Bytes())
return nil, result
}