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