diff options
| author | Jeff Carr <[email protected]> | 2025-03-22 08:30:15 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-03-22 08:30:15 -0500 |
| commit | 3dd6affd6fde2f0af23b35e7014ba59b6233320a (patch) | |
| tree | bf9eb38cb1072af2119c4c3c9d0acd797ed9a1cb /get_linux.go | |
| parent | 57706020c1a01b16ff37ad4bb33aa4e80e327714 (diff) | |
more hostname thingsv0.0.2
Diffstat (limited to 'get_linux.go')
| -rw-r--r-- | get_linux.go | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/get_linux.go b/get_linux.go index 9db8611..e7cd6d0 100644 --- a/get_linux.go +++ b/get_linux.go @@ -4,10 +4,39 @@ package hostname // data to and from config files import ( + "bytes" + "fmt" "os" + "os/exec" + "strings" ) func osGetHostname() (string, error) { - hostname, err := os.Hostname() - return hostname, err + host, err := os.Hostname() + if err != nil { + return host, fmt.Errorf("failed to get hostname: %w", err) + } + + domain, err := getDomainName() + if err != nil || domain == "" { + return host, err + } + + return fmt.Sprintf("%s.%s", host, domain), nil +} + +// getDomainName executes the 'domainname' command and returns its output. +func getDomainName() (string, error) { + cmd := exec.Command("domainname") + var out bytes.Buffer + cmd.Stdout = &out + if err := cmd.Run(); err != nil { + return "", fmt.Errorf("failed to execute 'domainname': %w", err) + } + domain := strings.TrimSpace(out.String()) + if domain == "(none)" { + return "", ErrorDomainNameMisconfigured + } + + return domain, nil } |
