名前解決
Linux の場合、名前解決は /etc/nsswitch.conf の設定に従う。nsswitch ってのは Name Service Switch のことね。ホスト名だけでなく、ユーザ、グループ、プロトコル*1の名前解決もこのファイルに依存する。ちなみに名前解決には NIS や LDAP も使える。聞くところによると WINS *2も使えるとか。
で、手軽にこれを調べるコマンドに getent なんてのがある。
getent hosts hostname
とかそんな感じ。でも、Debian lenny でこれやってみると、/etc/hosts(設定ファイル上で files) を優先にしておいても、hosts/DNS 両方でホスト名が見つかると DNS で見つかったほうを表示したりして全然実情にあってないでやんの。意味ねぇ。
とりあえず、思いつき名前解決スクリプト。
#!/usr/bin/env python import sys import socket for name in sys.argv[1:]: try: print '%s: %s' % (name, socket.gethostbyname(name)) except: print '%s: unknown' % name
いやまぁ、ping で十分だけどね。