开发者

Removing the last IP Address Octet in Ruby

开发者 https://www.devze.com 2023-03-30 05:23 出处:网络
In Ruby, I开发者_运维百科\'m wanting to take my local IP address and convert it into my network id (e.g. 192.168.1.1 to 192.168.1.0)

In Ruby, I开发者_运维百科'm wanting to take my local IP address and convert it into my network id (e.g. 192.168.1.1 to 192.168.1.0)

require "socket"
local_ip = UDPSocket.open {|s| s.connect("64.233.187.99", 1); s.addr.last}

This will give me my local ip, but how can I remove the last octet up to the dot(.)?


quick and dirty way would be something like

"192.168.1.1".rpartition(".")[0]
=> "192.168.1"

but if you know subnet mask or if you are running on subnets other than 24 bits (255.255.255.0), you should use IPAddr module, since network of those can be differ based on subnets.

> require 'IPAddr'
=> true
>  
> IPAddr.new("64.233.187.99/24").to_s
=> "64.233.187.0"

> IPAddr.new("64.233.187.99/20").to_s
=> "64.233.176.0"

refs:

  • http://ruby-doc.org/stdlib/libdoc/ipaddr/rdoc/index.html
0

精彩评论

暂无评论...
验证码 换一张
取 消