Как получить полное доменное имя текущего хоста в Ruby?

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

Ответ 1

Это работает:

hostname = Socket.gethostbyname(Socket.gethostname).first 

Ответ 2

hostname = Socket.gethostbyname(Socket.gethostname).first

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

Если вы прочтете код факсора, вы заметите, что они несколько обойдут проблему в целом, сказав:

fqdn = hostname + domainname

где:

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

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

Ответ 3

Может быть tad simpleer = > hostname = Socket.gethostname