リバース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.in
。read
次に、出力を目的のファイルにリダイレクトします。
$ 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エントリと一緒に表示されました。