簡體   English   中英

獲取Ruby上特定網絡接口的IP地址

[英]Get IP Address for a specific network interface on Ruby

我需要獲取每個網絡接口的IP地址。 問題是標准紅寶石方法Socket.ip_address_list僅向我返回地址列表,但是沒有有關哪個接口對應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>

我基本上是在尋找與os.networkInterfaces()[interfaceName]等效的os.networkInterfaces()[interfaceName]

我如何知道特定網絡接口的IP地址?

請讓我知道是否有辦法使用Ruby 1.9.X獲取此信息。

我將Ruby更新到2.3版本,然后使用Socket.getifaddrs (從Ruby 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

一線

require 'socket'; Socket.getifaddrs.map(&:addr).select(&:ipv4?).map(&:ip_address).select { |x| x !~ /\A127/ }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM