2015-04-28 13 views
0

中,默認的Ruby的Socket::gethostname返回沒有域名的短主機名。在RHEL6中,它返回主機名稱,包括的域名。在RHEL5中,紅寶石短的Socket.gethostname在RHEL6

這是由RHEL6中的不同系統hostname功能引起的,可以使用hostname -s在SH腳本中修復這些功能。是否有任何Socket::gethostname參數在Ruby中修復它?

可以通過使用正則表達式或使用系統調用解析輸出來修復,例如, 'hostname -s'.strip,但這既不是一個簡單的方法,也不是一個很好的解決方案。

你能幫忙嗎?

感謝 月

回答

0

正如你可能在rubydoc +看點擊即可觸發源,gethostname是一個簡單的包裝,以c stdlib

也就是說,你可能會嘗試編譯並執行下面的代碼。只要它不是你想要的,你可能會堅持到hostname -s

#include <unistd.h> 
#include <stdio.h> 

int main(int, char **) { 
    char buf[1025]; 
    gethostname(buf, 1024); 

    printf("%s\n", buf); 
} 
+0

感謝您的詳細資料。我對Ruby比較陌生(更新其他代碼),還沒有找到源代碼。 解決方案不是最快的,但因爲它不是執行數千次,所以不會介意。這只是非法的。 –

0

您可以使用正則表達式將所有內容返回到第一個'。'

require 'socket' 
hostname = Socket.gethostname[/^[^.]+/]