package hostname import ( "bytes" "fmt" "os/exec" ) // scutil --get HostName // scutil --get LocalHostName // scutil --get ComputerName // scutil --set HostName my-mac.example.com func osGetHostname() (string, error) { return scutil([]string{"-get", "HostName"}) } // getDomainName executes the 'domainname' command and returns its output. func scutil(args []string) (string, error) { cmd := exec.Command("scutil", args) var out bytes.Buffer cmd.Stdout = &out if err := cmd.Run(); err != nil { return "", fmt.Errorf("failed to execute 'scutil': %w", err) } domain := out.String() return domain, nil }