Ruby 确定给定IP地址是否在网络阵列中
我试图确定一个给定的IP是否在一系列网络中。对Ruby 确定给定IP地址是否在网络阵列中,ruby,arrays,networking,Ruby,Arrays,Networking,我试图确定一个给定的IP是否在一系列网络中。对IPAddr对象数组使用include?似乎不起作用(if条件从未满足),例如: 但是,如果我定义一个没有阵列的单一网络,它可以很好地工作: internal = IPAddr.new("192.168.10.1/24") 如果你需要更多信息,请告诉我。我对ruby不熟悉,所以要友善:)。IPAddr类有自己的include?方法,它与Array\include? 当你说internal.include?时,你实际上是在调用Array#inclu
IPAddr
对象数组使用include?
似乎不起作用(if条件从未满足),例如:
但是,如果我定义一个没有阵列的单一网络,它可以很好地工作:
internal = IPAddr.new("192.168.10.1/24")
如果你需要更多信息,请告诉我。我对ruby不熟悉,所以要友善:)。
IPAddr
类有自己的include?
方法,它与Array\include?
当你说internal.include?
时,你实际上是在调用Array#include?
来测试对象的平等性。显然,这些对象不同,因此比较失败
您真正想要的是查看是否有任何IPAddr
对象include?
yourmy\u IPAddr
对象
if internal.any? {|subnet| subnet.include?(my_ipaddr) }
puts "I'm in the internal network"
end
IPAddr
类有自己的include?
方法,与Array\include?
当你说internal.include?
时,你实际上是在调用Array#include?
来测试对象的平等性。显然,这些对象不同,因此比较失败
您真正想要的是查看是否有任何IPAddr
对象include?
yourmy\u IPAddr
对象
if internal.any? {|subnet| subnet.include?(my_ipaddr) }
puts "I'm in the internal network"
end
您要求Ruby查看数组中是否有任何对象与IP地址匹配,但它们不会匹配。IP网络与主机IP不相同 相反,您必须将主机IP与单个IP范围进行比较,并查看是否包含该范围 请参见IPAddr类中的:
internal.any? { |i| i.include?(my_ipaddr) }
可枚举的any?
返回true/false。使用find
获取第一个:
internal.find { |i| i.include?(my_ipaddr) }
如果您正在进行大量的IP地址操作或子网,请查看gem。真的很好 您要求Ruby查看数组中是否有任何对象与IP地址匹配,但它们不会匹配。IP网络与主机IP不同 相反,您必须将主机IP与单个IP范围进行比较,并查看是否包含该范围 请参见IPAddr类中的:
internal.any? { |i| i.include?(my_ipaddr) }
可枚举的any?
返回true/false。使用find
获取第一个:
internal.find { |i| i.include?(my_ipaddr) }
如果您正在进行大量的IP地址操作或子网,请查看gem。真的很好 效果很好。IPAddr对我来说似乎足够了,但是如果我需要的话,我会记住这个宝石。很好。IPAddress将是取代IPAddr的一个很好的候选者,而且,如果我没记错的话,关于这一点有过讨论。我认为它从那时起就被抛到了一边,但这对Ruby来说是件好事。效果很好。IPAddr对我来说似乎足够了,但是如果我需要的话,我会记住这个宝石。很好。IPAddress将是取代IPAddr的一个很好的候选者,而且,如果我没记错的话,关于这一点有过讨论。我想从那时起它就被抛到了一边,但这对Ruby来说是件好事。