diff --git a/agent/agent_unix.go b/agent/agent_unix.go index 80d81c1..286ba32 100644 --- a/agent/agent_unix.go +++ b/agent/agent_unix.go @@ -472,6 +472,30 @@ func (a *Agent) GetWMIInfo() map[string]interface{} { } } + switch runtime.GOOS { + case "linux": + baseboard, err := ghw.Baseboard() + if err != nil { + a.Logger.Debugln("ghw.Baseboard()", err) + wmiInfo["serialnumber"] = "n/a" + } else { + wmiInfo["serialnumber"] = baseboard.SerialNumber + } + case "darwin": + opts := a.NewCMDOpts() + serialCmd := `ioreg -l | grep IOPlatformSerialNumber | grep -o '"IOPlatformSerialNumber" = "[^"]*"' | awk -F'"' '{print $4}'` + opts.Command = serialCmd + out := a.CmdV2(opts) + if out.Status.Error != nil { + a.Logger.Debugln("ioreg get serial number: ", out.Status.Error.Error()) + wmiInfo["serialnumber"] = "n/a" + } else { + wmiInfo["serialnumber"] = removeNewlines(out.Stdout) + } + default: + wmiInfo["serialnumber"] = "n/a" + } + if len(cpus) == 0 { wmiInfo["cpus"] = []string{makeModel} } diff --git a/agent/utils.go b/agent/utils.go index 6eacaca..8e596b6 100644 --- a/agent/utils.go +++ b/agent/utils.go @@ -307,6 +307,10 @@ func removeWinNewLines(s string) string { return strings.ReplaceAll(s, "\r\n", "\n") } +func removeNewlines(s string) string { + return strings.ReplaceAll(s, "\n", "") +} + func stringInSlice(a string, list []string) bool { for _, b := range list { if b == a {