Как я могу получить полное доменное имя текущего хоста в Ruby? - PullRequest
13 голосов
/ 30 сентября 2008

Мне нужно получить полностью развернутое имя хоста, на котором работает мой скрипт Ruby. В Perl я использовал Sys :: Hostname :: Long с хорошими результатами. Похоже, Google предлагает использовать Socket.hostname в ruby, но при этом возвращается только имя узла, а не полное имя хоста.

Ответы [ 3 ]

20 голосов
/ 30 сентября 2008

Это похоже на работу:

hostname = Socket.gethostbyname(Socket.gethostname).first 
6 голосов
/ 21 августа 2012
hostname = Socket.gethostbyname(Socket.gethostname).first

не рекомендуется и будет работать только при правильной настройке обратного разрешения DNS. Эта ошибка Facter имеет более длинное объяснение, если необходимо.

Если вы прочитаете код facter, вы заметите, что они в некоторой степени обходят проблему, говоря :

fqdn = hostname + domainname

где:

hostname = %[hostname]
domainname = %[hostname -f] # minus the first element

Это разумное предположение, которое не зависит от настройки DNS (которая может быть внешней по отношению к устройству).

0 голосов
/ 01 декабря 2009

Может быть немного проще => hostname = Socket.gethostname

...