agent_linux.go 722 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // +build linux
  2. package agent
  3. import (
  4. "runtime"
  5. "syscall"
  6. )
  7. // osName returns the name of the OS.
  8. func osName() string {
  9. buf := &syscall.Utsname{}
  10. err := syscall.Uname(buf)
  11. if err != nil {
  12. return runtime.GOOS
  13. }
  14. return charsToString(buf.Sysname)
  15. }
  16. // osVersion returns the OS version.
  17. func osVersion() string {
  18. buf := &syscall.Utsname{}
  19. err := syscall.Uname(buf)
  20. if err != nil {
  21. return "0.0"
  22. }
  23. return charsToString(buf.Release)
  24. }
  25. // charsToString converts a [65]int8 byte array into a string.
  26. func charsToString(ca [65]int8) string {
  27. s := make([]byte, len(ca))
  28. var lens int
  29. for ; lens < len(ca); lens++ {
  30. if ca[lens] == 0 {
  31. break
  32. }
  33. s[lens] = uint8(ca[lens])
  34. }
  35. return string(s[0:lens])
  36. }