The jonki

呼ばれて飛び出てじょじょじょじょーんき

【Python】 hostnameからlookupでIPアドレス変換

追記:2010年8月6日 逆引きに関する記述が間違っていたので訂正しました。

タイトルの通りhostnameからIPアドレスに変換するプログラム。
調べてみるとPythonのsocket使えば解決するみたい。

hostname => IP
socket.gethostbyname

IP => hostname
socket.gethostbyaddr

今回使うのはgethostbynameの正引きの方。

ソース (lookup.py)

# -*- coding: utf-8 -*-
import socket
import sys


def main():
        if(len(sys.argv) != 2):
                print "Usage: python lookup.py <host filename>"
                sys.exit()
        
        filename = sys.argv[1]
        fr = open(filename, "r")        
        ip_addr = []
        while 1:
                s = fr.readline()
                if not s:
                        break
                hostname = s[:len(s)-1]
                print hostname
                try:
                        print socket.gethostbyname(hostname)
                except:
                        print "0"
        fr.close()

main()

サンプルファイル (sample_hostname)

$ less sample_hostname 
www.google.com
www.yahoo.co.jp
twitter.com
hatena.ne.jp

実行例

$ python lookup.py sample_hostnames 
www.google.com
66.249.89.99
www.yahoo.co.jp
124.83.139.191
twitter.com
128.242.240.116
hatena.ne.jp
59.106.108.86