Skip to content

Commit

Permalink
Merge pull request #603 from pierresouchay/host_id_fixed_on_linux
Browse files Browse the repository at this point in the history
Have a real fixed HostID on Linux
  • Loading branch information
shirou authored Nov 7, 2018
2 parents 4254ce2 + 890eb80 commit 48177ef
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions host/host_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,27 @@ func InfoWithContext(ctx context.Context) (*InfoStat, error) {
}

sysProductUUID := common.HostSys("class/dmi/id/product_uuid")
machineID := common.HostEtc("machine-id")
switch {
// In order to read this file, needs to be supported by kernel/arch and run as root
// so having fallback is important
case common.PathExists(sysProductUUID):
lines, err := common.ReadLines(sysProductUUID)
if err == nil && len(lines) > 0 && lines[0] != "" {
ret.HostID = strings.ToLower(lines[0])
break
}
fallthrough
// Fallback on GNU Linux systems with systemd, readable by everyone
case common.PathExists(machineID):
lines, err := common.ReadLines(machineID)
if err == nil && len(lines) > 0 && len(lines[0]) == 32 {
st := lines[0]
ret.HostID = fmt.Sprintf("%s-%s-%s-%s-%s", st[0:8], st[8:12], st[12:16], st[16:20], st[20:32])
break
}
fallthrough
// Not stable between reboot, but better than nothing
default:
values, err := common.DoSysctrl("kernel.random.boot_id")
if err == nil && len(values) == 1 && values[0] != "" {
Expand Down

0 comments on commit 48177ef

Please sign in to comment.