From 3dd6affd6fde2f0af23b35e7014ba59b6233320a Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 22 Mar 2025 08:30:15 -0500 Subject: more hostname things --- get_linux.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'get_linux.go') 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 } -- cgit v1.2.3