package sysctl // inspired from https://github.com/lorenzosaino/go-sysctl/blob/main/sysctl.go import ( "os" "path/filepath" "strings" ) const defaultPath = "/proc/sys/" // Get returns a sysctl from a given key. func Get(key string) (string, error) { return readFile(pathFromKey(key)) } // Set updates the value of a sysctl. func Set(key, value string) error { return writeFile(pathFromKey(key), value) } func pathFromKey(key string) string { return filepath.Join(defaultPath, strings.Replace(key, ".", "/", -1)) } func readFile(path string) (string, error) { data, err := os.ReadFile(path) if err != nil { return "", err } return strings.TrimSpace(string(data)), nil } func writeFile(path, value string) error { return os.WriteFile(path, []byte(value), 0o644) }