Files
komari-agent/monitoring/os.go
Akizon77 c2a9148d4c init
2025-04-11 17:26:34 +08:00

50 lines
938 B
Go

package monitoring
import (
"bufio"
"os"
"runtime"
"strings"
"golang.org/x/sys/windows/registry"
)
func OSName() string {
if runtime.GOOS == "windows" {
key, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
if err != nil {
return "Microsoft Windows"
}
defer key.Close()
productName, _, err := key.GetStringValue("ProductName")
if err != nil {
return "Microsoft Windows"
}
return productName
} else if runtime.GOOS == "linux" {
file, err := os.Open("/etc/os-release")
if err != nil {
return "Linux"
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if strings.HasPrefix(line, "PRETTY_NAME=") {
return strings.Trim(line[len("PRETTY_NAME="):], `"`)
}
}
if err := scanner.Err(); err != nil {
return "Linux"
}
return "Linux"
}
return "Unknown"
}