Ruby - 与平台无关的方法来确定所有网络接口的IP?

Tin*_*ron 7 ruby networking interface ip-address

在Ruby中有一个简单的方法可以获取所有网络接口的IP地址列表吗?它需要在Linux/Win/OSX中工作,我宁愿不必解析ifconfig/ipconfig,除非我绝对必须这样做.

Tin*_*ron 10

从Ruby 2.1开始,Socket#getifaddrs可用:

001:0> require 'socket'
=> true
002:0> Socket.getifaddrs.map { |i| i.addr.ip_address if i.addr.ipv4? }.compact
=> ["127.0.0.1", "192.168.1.121", "192.168.1.181"]
Run Code Online (Sandbox Code Playgroud)