2012-01-06 32 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