特定のネームサーバーに対して一括リバースDNSクエリを実行したいと思います。
現在こことGoogleで検索した結果です。 1つの項目に対して機能させるには、次のコマンドを使用しました。
dig @NAMESERVER -x 10.10.10.10 +short
これがまさに私が望むものです。ただし、複数のIPアドレスに対してこれを実行すると失敗します。私がしたことは、テストのために2つのIPアドレスをリストすることでした。
次のコマンドを使用しようとしています。
dig @NAMESERVER -x -f dnsquery.txt +short
何の結果も出ません。私が何を間違っているのでしょうか?
入力ファイルには2つの行があり、各行には1つのIPアドレスがあります。
10.10.10.10
10.10.10.11
答え1
thrigが述べたようにループから呼び出すことができますdig
。
たとえば、この小さなbashスクリプトを使用して、次のファイルに保存できますbulkreverse.sh
。
#!/bin/bash
filename='ip_in.txt' # name of file with IPs to handle
nameserver='8.8.8.8' # nameserver to query
for ip in `cat $filename`
do
echo 'Handling reverse DNS for $ip'
dig @$nameserver -x $ip +short
done
この変数は、filename
IPアドレスのリスト(1行に1つのIPアドレスなど)を含むファイル名を指定します。nameserver
照会するネームサーバー。
スクリプトをというファイルに保存した場合は、bulkreverse.sh
以下を実行して実行可能にする必要があります。
chmod +x bulkreverse.sh
後で実行できます
./bulkreverse.sh
これが役立つことを願っています!
答え2
その数が多い場合は、GNU Parallel が作業を高速化するのに役立ちます。
nameserver=80.80.81.81
parallel -j100 --retries 3 dig @$nameserver -x {} +short :::: ip_in.txt
答え3
awk
以下を使用して、順方向アドレスを逆方向アドレスに変換できます。dig
awk -F. '{printf "%s.%s.%s.%s.in-addr.arpa\n",$4,$3,$2,$1}' dnsqueries.txt |
dig +short ptr @NAMESERVER -f -
答え4
元のコードが機能しない理由は、-x
ファイルから読み取られたすべてのデータ行にコードを含める必要があるためです。これはマニュアルページに文書化されていますが、個人的には明確になると思います。
-f file
バッチモード:dig
指定されたファイルで処理する検索要求のリストを読み取ります。ファイルの各行は、dig
コマンドラインインターフェイスを使用してクエリとして表示されるのと同じ方法で設定する必要があります。
最後の文は通訳であり、その行は「クエリでマイニングされるのと同じ方法で設定つまり、サンプルファイルには次のものを含める必要があります。
-x 10.10.10.10
-x 10.10.10.11
ファイルが変更不可能であると仮定すると、それを使用してsed
必要なコンテンツの前に追加し、-x
結果を次にパイプすることができますdig
。
sed 's/^/-x /' dnsquery.txt | dig +short -f -