<< 2007/10/ 1 1. Reminderfox のポップアップがあんまり目立たない
2 1. Growl を入れてみたがまだイマイチ
3 1. Reminderfox + iCal も難しい
4 1. IPAフォント00201 を OSX 10.3 で試す
5 1. javascript.el のカスタマイズがやっと少し分かった
6 1. hosts の影響があるかどうかは host と ping を使えば分かりそう
7 8 1. hosts と DNS のどちらで名前解決してるか分かるツール書いてみた
9 10 11 1. メンテ終了
2. いまさらHSPネタなのに
3. 関西オープンソース行ってみようかな
12 1. DOM node 内で使える getter は getElementsByTagName だけ
2. IE って難しい
13 1. ma.la印ローカルプロキシ(2006年製)がちょっとイマイチ
2. Firefox で proxy の設定を手早く
3. Opera で proxy の設定を手早く
4. OSX 全般で proxy の設定を手早く
14 1. たださんによる iPod Touch レビューがありがたい
2. WEBrick メモ
3. event handling って難しい
15 1. location への代入で Safari は履歴を残さない
16 1. 文字コードを指定して読み直し
17 1. はてなの新編集機能に(悪い意味で)ビビる
18 1. Widget Class Library なんてものが
19 1. Yahoo Widget Class Library をちょっと読んでみた
20 21 1. Spket IDE 試してみた
22 1. tramp で sshx で multihop
2. Be My Last ヘビーローテ
23 1. Yahoo! Widgets Engine の engine が SpiderMonkey だって忘れてた
24 1. WCLはもう一手間加えないとダメだな
25 1. ES4って文字列に改行を含むことができるようになるんだ
2. 破綻させてないもん
26 1. CentOS のネットワークインストール時に URL を間違ってハマる
2. CentOS 初挑戦で yum リポジトリに悩む
27 1. 日本はどこの業界も異常という話
2. VPC for Mac はもはやステということか
3. Sunbrid & Lightning 0.7
4. いつの間にか Cygwin で screen が使える
28 29 1. yum リポジトリで特定のパッケージだけを扱う
30 1. もっと誉められてしかるべきだ
31 1. go-pear.org なんてねぇ!
2. PostgreSQL 8.1 以降、ユーザーとかグループとか言わない
>>
トップ «前の日記(2007-10-06) 最新 次の日記(2007-10-11)» 編集

2007-10-08 [長年日記]

_ hosts と DNS のどちらで名前解決してるか分かるツール書いてみた

またタイトルで終わってしまった。

odz buffer - 名前解決

でヒントをもらったので Ruby で書いてみた。

#! /usr/bin/env ruby

require 'resolv'
require 'ipaddr'

def main()
  host      = ARGV.shift()
  num_addrs = 0

  if ( host )
    begin
      ipaddr = IPAddr.new( host )
      output_names( ipaddr )
    rescue
      begin
        num_addrs += output_addrs( Resolv::Hosts.new(), host )
      ensure
        num_addrs += output_addrs( Resolv::DNS.new(), host )
      end
    end
  else
    STDERR.puts "Usage: #{$0} hostname/FQDN|ipaddr"
  end

  return num_addrs
end

def output_addrs( resolv, host )
  addrs = resolv.getaddresses( host )

  if ( addrs.size > 0 )
    puts resolv.class.to_s.sub( /Resolv::/, '' )
    addrs.each { |addr|
      puts addr
    }
  end

  return addrs.size
end

def output_names( ipaddr )
  if ( ipaddr.class == IPAddr and
         names = Resolv.getnames( ipaddr.to_s ) and
         names.size > 0 )
    names.each { |name|
      puts name
    }
  end

  return names.size
end

if ( $0 == __FILE__ )
  main()
end

試しに getaddresses.rb という名前にしてみる。

$ ./getaddresses.rb aligach.net
Hosts
127.0.0.1
DNS
202.181.99.90
$ ./getaddresses.rb www.google.com
DNS
66.249.89.99
66.249.89.104
66.249.89.147

意外に便利。

取得したアドレスの数が返せてるかどうかよく分からないんだけど。まぁダメならダメでいいか。

[2007-10-09 追記] 逆引きもできるようにしてみた。名前は pseudohost.rb とかそんなんで。

逆引きもできるので、通常の使い方では alias で host にしちゃうことも可能になった。これでより使いやすくなった。

※ ただし面倒なので逆引きの方は hosts だ DNS だなんつーことは言いません。

Tags: Ruby Tool DNS Net