38 lines
648 B
Go
38 lines
648 B
Go
|
|
package metrics
|
||
|
|
|
||
|
|
import (
|
||
|
|
"os/exec"
|
||
|
|
"strings"
|
||
|
|
"syscall"
|
||
|
|
)
|
||
|
|
|
||
|
|
func getOSVersion() (string, string) {
|
||
|
|
cmd := exec.Command("sw_vers", "-productVersion")
|
||
|
|
|
||
|
|
output, err := cmd.Output()
|
||
|
|
if err != nil {
|
||
|
|
return "", ""
|
||
|
|
}
|
||
|
|
|
||
|
|
return strings.TrimSpace(string(output)), ""
|
||
|
|
}
|
||
|
|
|
||
|
|
func getFilesystemType(path string) (string, error) {
|
||
|
|
var stat syscall.Statfs_t
|
||
|
|
err := syscall.Statfs(path, &stat)
|
||
|
|
if err != nil {
|
||
|
|
return "", err
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert the filesystem type name from [16]int8 to string
|
||
|
|
fsType := make([]byte, 0, 16)
|
||
|
|
for _, c := range stat.Fstypename {
|
||
|
|
if c == 0 {
|
||
|
|
break
|
||
|
|
}
|
||
|
|
fsType = append(fsType, byte(c))
|
||
|
|
}
|
||
|
|
|
||
|
|
return string(fsType), nil
|
||
|
|
}
|