func readSystemdProperties()

in image/resources/knfsd-agent/status.go [176:210]


func readSystemdProperties(unit string, properties ...string) (map[string]string, error) {
	result := make(map[string]string)

	if len(properties) == 0 {
		return result, nil
	}

	cmd := exec.Command("systemctl", "show",
		"--property", strings.Join(properties, ","),
		unit)

	out, err := cmd.Output()
	if err != nil {
		return nil, fmt.Errorf("could not read systemd properties for %s: %w", unit, err)
	}

	s := bufio.NewScanner(bytes.NewReader(out))
	for s.Scan() {
		line := strings.TrimSpace(s.Text())
		if line == "" {
			continue
		}

		parts := strings.SplitN(line, "=", 2)
		if len(parts) != 2 {
			continue
		}

		k := strings.TrimSpace(parts[0])
		v := strings.TrimSpace(parts[1])
		result[k] = v
	}

	return result, s.Err()
}