Shell脚本反向DNS查找

Shell脚本反向DNS查找

我正在尝试编写一个 shell 脚本来执行反向 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 条目一起显示。

相关内容