osinfo_linux.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Unless explicitly stated otherwise all files in this repository are licensed
  2. // under the Apache License Version 2.0.
  3. // This product includes software developed at Datadog (https://www.datadoghq.com/).
  4. // Copyright 2016 Datadog, Inc.
  5. package osinfo
  6. import (
  7. "bufio"
  8. "os"
  9. "strings"
  10. )
  11. func osName() string {
  12. f, err := os.Open("/etc/os-release")
  13. if err != nil {
  14. return "Linux (Unknown Distribution)"
  15. }
  16. defer f.Close()
  17. s := bufio.NewScanner(f)
  18. name := "Linux (Unknown Distribution)"
  19. for s.Scan() {
  20. parts := strings.SplitN(s.Text(), "=", 2)
  21. switch parts[0] {
  22. case "Name":
  23. name = strings.Trim(parts[1], "\"")
  24. }
  25. }
  26. return name
  27. }
  28. func osVersion() string {
  29. f, err := os.Open("/etc/os-release")
  30. if err != nil {
  31. return "unknown"
  32. }
  33. defer f.Close()
  34. s := bufio.NewScanner(f)
  35. version := "unknown"
  36. for s.Scan() {
  37. parts := strings.SplitN(s.Text(), "=", 2)
  38. switch parts[0] {
  39. case "VERSION":
  40. version = strings.Trim(parts[1], "\"")
  41. case "VERSION_ID":
  42. if version == "" {
  43. version = strings.Trim(parts[1], "\"")
  44. }
  45. }
  46. }
  47. return version
  48. }