2016-08-23 9 views
0

各ネットワークインターフェイスのIPアドレスを取得する必要があります。問題は、標準のルビーメソッドSocket.ip_address_listは私にアドレスリストだけを返しますが、IPアドレスに対応するインターフェイスに関する情報はありません。ルビーの特定のネットワークインターフェイスのIPアドレスを取得

#<Addrinfo: 127.0.0.1> 
#<Addrinfo: 192.168.13.175> 
#<Addrinfo: 172.17.0.1> 
#<Addrinfo: ::1> 
#<Addrinfo: fe80::4685:ff:fe0d:c406%wlan0> 

私は基本的にNodeJS os.networkInterfaces()[interfaceName]と同等のものを探しています。

特定のネットワークインターフェイスのIPアドレスはどのように知ることができますか?

+0

あなたはまだあなたがしているのRuby 1.9を使用している場合http://www.rubydoc.info/gems/ethernet/0.1.3/Ethernet/Devices – chenchuk

答えて

1

(ルビー2.1以降で利用可能)Socket.getifaddrsを使用し、私はその後、2.3バージョンにルビーを更新し、

ルビー1.9.Xを使用してこの情報を取得する方法があります場合は私に知らせてください。

require 'socket' 
addr_infos = Socket.getifaddrs 
addr_infos.each do |addr_info| 
    if addr_info.addr 
     puts "#{addr_info.name} has address #{addr_info.addr.ip_address}" if addr_info.addr.ipv4? 
    end 
end 

出力:

$ ruby2.3 getInterfaces.rb 
lo has address 127.0.0.1 
wlan0 has address 192.168.13.175 
docker0 has address 172.17.0.1 
+0

これを試してみてください借りた時間に暮らしていても、それはもはや更新を受けていません。通常、1.9から2.xへのアップグレードは比較的簡単ですが、どれくらいの摩擦があるか試してみる必要があります。 – tadman

関連する問題