指定されたIPアドレスの範囲を出力する
YouTubeをIPブロックできないかで調べたときに出来た代物。 6万近くIPが出力されたので/etc/hostsに書き込むのは現実的ではない...。 とりあえずメモしておく。
#!/usr/bin/ruby def ip_addrs(num1, num2) num1_arr = num1.split(".").map(&:to_i) num2_arr = num2.split(".").map(&:to_i) ret = [] (num1_arr[0]..num2_arr[0]).map do |ip1| (num1_arr[1]..num2_arr[1]).map do |ip2| (num1_arr[2]..num2_arr[2]).map do |ip3| (num1_arr[3]..num2_arr[3]).map do |ip4| ret.push "#{ip1}.#{ip2}.#{ip3}.#{ip4}" end end end end ret end nums1 = "207.223.160.0 - 207.223.175.255".split(" - ") nums2 = "208.65.152.0 - 208.65.155.255".split(" - ") nums3 = "208.117.224.0 - 208.117.255.255".split(" - ") nums4 = "209.85.128.0 - 209.85.255.255".split(" - ") nums5 = "216.58.192.0 - 216.58.223.255".split(" - ") nums6 = "216.239.32.0 - 216.239.63.255".split(" - ") ip_addrs_arr = [nums1, nums2, nums3, nums4, nums5, nums6].map do |nums| ip_addrs(nums[0], nums[1]) end f = File.open("ipaddr.txt", "w") ip_addrs_arr.map do |ip_arr| puts ip_arr.size f.puts(ip_arr) end
$ ./iploop.rb 4096 1024 8192 32768 8192 8192
207.223.160.0 207.223.160.1 207.223.160.2 207.223.160.3 207.223.160.4 ・ ・ ・ 216.239.63.251 216.239.63.252 216.239.63.253 216.239.63.254 216.239.63.255