Skip to content

Instantly share code, notes, and snippets.

@varp
Created April 24, 2015 12:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save varp/0ed6f98c48b672c3978b to your computer and use it in GitHub Desktop.
Save varp/0ed6f98c48b672c3978b to your computer and use it in GitHub Desktop.
Cross check IP addresses
require 'pathname'
require 'whois'
require 'resolv'
# for file in *.log; do cat $file | grep -vi '+http://yandex.com/bots' | grep -vi 'googlebot' > $file.woutbots; done
# for file in *.woutbots; do cat $file | cut -f1 -d' ' > $file.ips; done
# for file in *.ips; do cat $file | sort | uniq > $file.uniq; done
a_folder = ARGV[0] unless ARGV.empty?
b_folder = ARGV[1] unless ARGV.empty? && ARGV.length != 1
class CrossChecker
FILE_EXT = "*.ips.uniq"
def initialize(a_folder, b_folder)
@@B_IPS = []
@@A_IPS = []
@@LOG_FILE = "cross.log"
@@logger = nil
@@workdir = nil
# get CWD
@@workdir = Dir.pwd
# prepare ips for checking
Dir.chdir File.join @@workdir, b_folder
Dir.glob(FILE_EXT).each do |b_file|
File.open(b_file) do |file|
file.each do |ip|
@@B_IPS << ip
end
end
end
#prepare ips to check
Dir.chdir File.join @@workdir, a_folder
Dir.glob(FILE_EXT).each do |a_file|
File.open(a_file) do |file|
file.each do |ip|
@@A_IPS << ip
end
end
end
# open log file
@@logger = File.new File.join(@@workdir, @@LOG_FILE), "w+"
end
def check
@@A_IPS.each do |a_ip|
if @@B_IPS.find_index a_ip
begin
name = Resolv.getname(a_ip.chop)
rescue
name = "----"
end
@@logger.write "%-20s \t\t %s\n" % [a_ip.chop, name]
puts "Match found for #{a_ip}"
end
end
@@logger.close
end
end
CrossChecker.new(a_folder, b_folder).check
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment