id_bsd.go 510 B

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