一応残しておく

某所の議論にあったApacheログを解析ネタ。
IPから名前解決してアクセス元のプロバイダのランキングだけやるコードをRubyで書いてみた。

require 'resolv'

logArray = []
namesArray = []

open("/var/log/httpd/apache_log") do |file|
  file.each do |s|

    logArray << s.split(nil)
    logArray.flatten
    ip = logArray.shift
    namesArray << Resolv.getnames(ip.shift)

  end
end

names = namesArray.uniq
hostsRank = Hash::new

names.each{|name|

  cnt = 0

  namesArray.each{|names|
    if(name == names)
      cnt = cnt + 1 
    end
  }

  hostsRank[name] = cnt

}
print hostsRank.sort_by{|key,val| -val}