2012-01-06 56 views
5

我寫的是需要知道主機的MAC地址是什麼腳本編程地址。如何讓我的MAC使用Ruby

有誰知道如何做到這一點?

+3

開發是什麼操作系統你?如果不知道,沒有可能的答案是可能的。 – 2012-01-06 17:29:55

+0

猜猜會有幫助。 Mac OS X – mcass20 2012-01-06 18:41:25

回答

4

我不認爲有任何的Ruby內置函數來檢索地址;您可能需要進行系統調用以列出該值(例如,UNIX上的ifconfig,Win32上的ipconfig /all),並根據需要解析輸出。

像這樣(未經測試的僞代碼):

def mac_address 
    platform = RUBY_PLATFORM.downcase 
    output = `#{(platform =~ /win32/) ? 'ipconfig /all' : 'ifconfig'}` 
    case platform 
    when /darwin/ 
     $1 if output =~ /en1.*?(([A-F0-9]{2}:){5}[A-F0-9]{2})/im 
    when /win32/ 
     $1 if output =~ /Physical Address.*?(([A-F0-9]{2}-){5}[A-F0-9]{2})/im 
    # Cases for other platforms... 
    else nil 
    end 
end 
+0

Ouch。我認爲這與檢索IP地址類似,這很簡單。 – mcass20 2012-01-06 17:42:21

+0

我是一位經驗豐富的.NET開發人員,在您的示例中苦苦掙扎。因爲它只能在Mac上運行,所以我將它縮減爲幾行,但它只返回零。 – mcass20 2012-01-06 18:11:25

+0

@ mcass20:哎呀,拙劣的win32正則表達式,只是修復它(至少在Win XP中)。 – maerics 2012-01-06 18:16:30

3

有一個名爲macaddr做這個寶石,但基本上它的解析系統的ifconfig的輸出。你可以看到線程時它被在http://www.ruby-forum.com/topic/113956

+1

你可以看到該庫[GitHub上]的全功能代碼(https://github.com/ahoward/macaddr/blob/master/lib/macaddr.rb) – Phrogz 2012-01-06 18:50:30

+0

謝謝你們。似乎maerics給了我相當於那個寶石的代碼。 – mcass20 2012-01-06 20:12:54