Ruby: IP アドレスからホスト名に変換 (Socket.gethostbyaddr)

ウェブのアクセスログを解析する中で、IP アドレスのホスト名への変換が必要となったので、Socket.gethostbyaddr を使ってみました。

$ irb
>> require 'socket'
=> true
>> ip = "17.149.160.40"
=> "17.149.160.40"
>> addr = ip.split('.').map {|x| x.to_i}.pack('C4')    # '.' 区切りで分解し、それぞれを1バイトに変換
=> "\021\225\240("
>> host = Socket.gethostbyaddr(adds)        # ホスト名などが返ってくる
=> ["www.apple.co.jp", ["40.160.149.17.in-addr.arpa"], 2, "\021\225\240("]
>> host = Socket.gethostbyaddr(addr).first        # 最初がホスト名
=> "www.apple.co.jp"
>> 

確認バージョン

  • ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
  • irb 0.9.5(05/04/13)
カテゴリー: Ruby Class: Socket, Ruby Network タグ: パーマリンク

コメントは停止中です。