29 lines
618 B
Go
29 lines
618 B
Go
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
|
|
}
|