id_linux.go 641 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. //读取指定的文件
  19. for _, p := range paths {
  20. if buf, err = ioutil.ReadFile(p); err == nil {
  21. s = string(buf)
  22. return
  23. }
  24. }
  25. //计算网卡信息
  26. h := md5.New()
  27. if is, err := net.Interfaces(); err == nil {
  28. for _, i := range is {
  29. if i.HardwareAddr != nil {
  30. h.Write(i.HardwareAddr)
  31. }
  32. }
  33. }
  34. s = hex.EncodeToString(h.Sum(nil))
  35. return
  36. }