id_linux.go 616 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //go:build linux
  2. // +build linux
  3. package machineid
  4. import (
  5. "crypto/md5"
  6. "encoding/hex"
  7. "net"
  8. )
  9. func getMachineID() (s string, err error) {
  10. paths := []string{
  11. "/var/lib/dbus/machine-id",
  12. "/etc/machine-id",
  13. "/sys/class/dmi/id/product_uuid",
  14. }
  15. var (
  16. buf []byte
  17. )
  18. for _, p := range paths {
  19. if buf, err = ioutil.ReadFile(p); err == nil {
  20. s = string(buf)
  21. return
  22. }
  23. }
  24. //计算网卡信息
  25. h := md5.New()
  26. if is, err := net.Interfaces(); err == nil {
  27. for _, i := range is {
  28. if i.HardwareAddr != nil {
  29. h.Write(i.HardwareAddr)
  30. }
  31. }
  32. }
  33. s = hex.EncodeToString(h.Sum(nil))
  34. return
  35. }