如何在Ruby中获取本地机器的IP地址?

Raj*_*tan 13 ruby ip-address

我在Ubuntu 12.04LTS操作系统中进行Rails开发.

我想在一个文件中捕获我的本地IP地址,而不是我使用的环回127.0.0.1 ifconfig.请提出解决方案.

Sig*_*urd 24

使用Socket :: ip_address_list.

Socket.ip_address_list #=> Array of AddrInfo
Run Code Online (Sandbox Code Playgroud)

  • 第二个并不总是合适的.您可能有许多不同的接口和环回.您可以使用以下代码拒绝所有"本地"地址并公开第一个外部`Socket.ip_address_list.find {| a | a.ipv4??!(a.ipv4_private?|| a.ipv4_loopback?):!(a.ipv6_sitelocal?|| a.ipv6_linklocal?|| a.ipv6_loopback?)}` (9认同)
  • 究竟什么不起作用?请提供您的AddrInfo数组.可能是你的机器没有自己的远程ip,你需要丢弃ipv4_private吗?和ipv6_sitelocal?从条件,以获得本地子网IP. (5认同)