2012-01-06 25 views
5

私はホストコンピュータのMACアドレスを知る必要があるスクリプトを書いています。RubyでMACアドレスをプログラムで取得する方法

誰でもこれを行う方法を知っていますか?

+3

どのOSが動作していますか?それを知らずに、有益な答えが得られない可能性があります。 –

+0

これは役に立ちそうです。 Mac OS X – mcass20

答えて

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

よろしくお願いします。 IPアドレスの取得に似ていると思いましたが、これはかなり簡単でした。 – mcass20

+0

あなたのサンプルに苦労している熟練した.NET開発者です。私はそれがMacでのみ実行されるので、私はそれを数行に減らしましたが、それはゼロを返します。 – mcass20

+0

@ mcass20:oopsは、win32の正規表現に手を加えず、ちょうどそれを修正しました(少なくともWin XPでは)。 – maerics

3

あり、これを行いmacaddrと呼ばれる宝石ですが、基本的には、システムのifconfigの出力を解析です。スレッドを開発中のときに見ることができますhttp://www.ruby-forum.com/topic/113956

+1

このライブラリの全機能コードを見ることができます[GitHubで](https://github.com/ahoward/macaddr/blob/master/lib/macaddr.rb) – Phrogz

+0

ありがとうございます。 maericsが私にその宝石と同等のコードを与えたようです。 – mcass20

関連する問題