2012-01-06 15 views
5

Ana bilgisayarın MAC adresinin ne olduğunu bilmesi gereken bir komut dosyası yazıyorum.MAC Adresim Ruby ile programlamal olarak nasıl edinilir

Bunu nasıl yapacağını bilen var mı?

+3

adresinde geliştirilmekte olan konu görüntülenmekte. Hangi OS platformundasınız? Bunu bilmeden, yararlı bir cevap mümkün değildir. –

+0

Sanırım bu yardımcı olur. Mac OS X – mcass20

cevap

4

Bu adresi almak için herhangi bir Ruby yerleşik işlevi olduğunu düşünmüyorum; muhtemelen değeri listelemek için bir sistem çağrısı yapmanız gerekir (ör. UNIX'teki ifconfig, Win32'de ipconfig /all) ve çıktıyı gerektiği gibi ayrıştırmanız gerekir. Bu (denenmemiş pseudocode) gibi

şey:

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. Oldukça basit olan IP Adresinin alınmasına benzer olacağını düşündüm. – mcass20

+0

Örneğinizle mücadele eden tecrübeli bir .NET dev var. Sadece Mac'lerde çalışacağından sadece nil döndürdüğünden birkaç satır ilerledim. – mcass20

+0

@ mcass20: oops, win32 regex'ini dolduruyor, sadece düzeltildi (en azından Win XP için). – maerics

3

yapar macaddr adında bir mücevher vardır, ama temelde sistem en ifconfig çıktısını ayrıştırma ediyor. http://www.ruby-forum.com/topic/113956

+1

Bu kütüphane için tüm işlevsel kodu [GitHub'da] görebilirsiniz (https://github.com/ahoward/macaddr/blob/master/lib/macaddr.rb) – Phrogz

+0

Teşekkürler çocuklar. Maerics bana o gemin kod eşini vermiş gibi görünüyor. – mcass20