id_linux.go 654 B

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