2015-10-03 3 views
1

Как найти полное доменное имя локального узла в GO (golang)?Как найти полное доменное имя локального узла в GO (golang)?

BTW: net.LookupAddr() не работает в Windows. Так что это не вариант.

+0

Nope. Это не вернет DNS-суффикс. –

+0

Как вы получите информацию от ОС? В этом смысле нет ничего особенного. Установлена ​​ли переменная среды USERDNSDOMAIN? – JimB

+0

Это не сработает. Он обычно не установлен. Где получить DNS-суффикс подключения зависит от ОС. Есть api-вызовы или файл/etc. Я обнаружил, что Go не обеспечивает общий способ работы с ОС, чтобы получить его, и вам придется писать функцию самостоятельно для каждой ОС. Для окна Мне нужно вызвать системный вызов 'IpAdapterAddresses'; на linux мне придется разобраться, когда я переношу приложение в CentOS. –

ответ

3

По умолчанию нет короткого пути.

os.Hostname() не предоставляет Полноценное доменное имя по умолчанию.

cmd := exec.Command("/bin/hostname", "-f") 
var out bytes.Buffer 
cmd.Stdout = &out 
err := cmd.Run() 
if err != nil { 
    log.Errorf(err) 
} 
fqdn := out.String() 
fqdn = fqdn[:len(fqdn)-1] // removing EOL 

0

Вы можете выполнить некоторые гимнастику, используя чистую LIB, как продемонстрировал here.

Смежные вопросы