2008-09-30 27 views

Trả lời

20

Điều này dường như làm việc:

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

Trên Mac OS X, điều này dường như trả về tên máy chủ trong chữ thường: '$ ruby ​​-e 'đặt Socket.gethostbyname (Socket.gethostname) .first' xin.local' trái ngược với lệnh bash 'hostname'' $ hostname XIN.local' – asmaier

-5

Có thể là một chút đơn giản hơn => hostname = Socket.gethostname

+1

Socket.gethostname không nhất thiết phải trả về FQDN. – dvorak

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

không được khuyến khích và sẽ chỉ làm việc nếu độ phân giải DNS ngược của bạn được đặt đúng cách lên. This Facter bug có giải thích dài hơn nếu cần.

Nếu bạn đọc mã facter, bạn sẽ nhận thấy rằng họ hơi sidestep the issue altogether by saying:

fqdn = hostname + domainname 

nơi:

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

Đây là một giả định hợp lý mà không phụ thuộc vào thiết lập của DNS (có thể nằm ngoài hộp).

+0

+1, điều này ít nhất sẽ làm việc cho * nix derivates – Shirkrin

+2

Nếu tên miền không được đặt trên máy, hostname -f cũng sẽ truy vấn DNS. –

Các vấn đề liên quan