シェルスクリプトリバースDNSルックアップ

シェルスクリプトリバースDNSルックアップ

リバースDNSルックアップを実行するためにシェルスクリプトを作成しようとしても機能しません。

基本的に私はこれをしたい:

dig -x 8.8.8.8 +short 

出力は次のとおりですgoogle-public-dns-a.google.com。出力ファイルに送りたいです。

現在私のコードは次のとおりです。

#!/bin/bash
#Read a file where per line there will be an IP address. The .in file is the input/sourcelist from which IP addresses are read
cat reverse_dns_lookup.in | while read line
#
do
    # Do a reverse lookup
    dig -x $line +short
done

スクリプトを実行しても何も起こらないようなので、呼び出すのではなく、まず次のようにdigスクリプトをテストすることをお勧めします。

echo dig -x $line +short

これでも出力は生成されません。私がここで何を見逃しているのでしょうか?

答え1

reverse_dns_lookup.in含まれていると推定

-x 8.8.8.8
-x 127.0.0.1

それから:

$ dig -f reverse_dns_lookup.in +short
google-public-dns-a.google.com.
localhost.

-x既存のファイルの内容に追加してdigファイルを変更せずに呼び出すには、プロセス置換を使用します。

$ dig -f <( sed 's/^/-x /' reverse_dns_lookup.in ) +short

これにより、ループdig内の複数の呼び出しを防ぎますreverse_dns_lookup.inread

次に、出力を目的のファイルにリダイレクトします。

$ dig -f <( sed 's/^/-x /' reverse_dns_lookup.in ) +short >dig-results.txt

成功したクエリ結果とIPアドレスを関連付けるには:

$ dig -f <( sed 's/^/-x /' reverse_dns_lookup.in ) +noall +answer | awk '{ print $1, $NF }' >dig-results.txt

私が使用したサンプルファイルの場合は、次のようになります。

8.8.8.8.in-addr.arpa. google-public-dns-a.google.com.
1.0.0.127.in-addr.arpa. localhost.

存在するdig-results.txt

答え2

#!/bin/bash

while read line
do
        echo $line - `dig -x "$line" +short`
done < reverse_dns_lookup.in

このコードは私にとってうまくいきます。ファイルがreverse_dns_lookup.in正しい場所にあることを確認する必要があります。

スクリプトの出力をファイルに送信するには、bashで標準のstdinリダイレクト演算子を使用してリダイレクトします。 ./script.sh > output_file.txt

また、変更に対するあなたの懸念に対する回答として、IPはrevdnsエントリと一緒に表示されました。

関連情報