Created
April 24, 2015 12:39
-
-
Save varp/0ed6f98c48b672c3978b to your computer and use it in GitHub Desktop.
Cross check IP addresses
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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