id_bsd.go 576 B

1234567891011121314151617181920212223242526272829303132
  1. //go:build freebsd || netbsd || openbsd || dragonfly || solaris
  2. // +build freebsd netbsd openbsd dragonfly solaris
  3. package machineid
  4. import (
  5. "io/ioutil"
  6. "os/exec"
  7. )
  8. func getMachineID() (s string, err error) {
  9. paths := []string{
  10. "/etc/hostid",
  11. "/sys/class/dmi/id/product_uuid",
  12. }
  13. var (
  14. buf []byte
  15. )
  16. for _, p := range paths {
  17. if buf, err = ioutil.ReadFile(p); err == nil {
  18. s = string(buf)
  19. break
  20. }
  21. }
  22. if s == "" {
  23. cmd := exec.Command("kenv", "-q", "smbios.system.uuid")
  24. if buf, err = cmd.Output(); err == nil {
  25. s = string(buf)
  26. }
  27. }
  28. return
  29. }