在Ruby上获取特定网络接口的IP地址
问题描述:
我需要获取每个网络接口的IP地址。问题是标准ruby方法Socket.ip_address_list
仅向我返回地址列表,但没有关于哪个接口对应于IP地址的信息。在Ruby上获取特定网络接口的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地址?
答
请让我知道如果有一种方式来获得这些信息使用Ruby 1.9.x的
我更新的Ruby 2.3的版本,然后使用Socket.getifaddrs
(可用自红宝石2.1)。
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
如果你还在使用Ruby 1.9的你靠借来的时间生活,它不再接收更新。通常从1.9升级到2.x是相对无痛的,但你必须尝试看看你有多少摩擦。 – tadman
试试这个http://www.rubydoc.info/gems/ethernet/0.1.3/Ethernet/Devices – chenchuk