シェルスクリプトでIPのDNSルックアップを安全に元に戻す方法

シェルスクリプトでIPのDNSルックアップを安全に元に戻す方法

ホスト名を取得し、IPアドレスをポップアップする方法(リバースDNSルックアップ)を見つけようとしています。

私はこれを考えましたが、他のLinuxディストリビューションで安全かどうかはわかりません。

nslookup $ip|grep "name ="|sed 's/^.*name = //'| sed '$s/\.$//'

大丈夫そうです。 nslookupを呼び出すと、次のようになります。

$ nslookup 127.0.0.1
Server:     192.154.28.100
Address:    192.154.28.100#53

1.0.0.127.in-addr.arpa  name = localhost.

したがって、ホスト名が指定されていない行を削除するためにgrepを実行します。その後、 "name ="の前のすべての項目を削除し、最後に削除するために使用します。何らかの理由で複数の行がある場合は、最初の行のみを使用します。これにより「localhost」が提供されます。これを行うより良い方法が必要ですか?

答え1

nslookupdigISCコマンドを好むあまり使用されていないコマンド。

を使用するには、dig次のように書くことができます。

dig -x 127.0.0.1 +short

または、次のことができます。

perl -MSocket -le 'print((gethostbyaddr(inet_aton("127.0.0.1"), AF_INET))[0])'

情報を取得するには、システムのリゾルバを使用します(DNSだけでなく、/etc/hostsDNS、NIS +、LDAP ...を使用することもできます)。/etc/nsswitch.confdignslookup

答え2

次のような出力を提供するホストコマンドを試すことができます。

$ host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.

関連情報