为 AWStats 手动创建 dnscache.txt

为 AWStats 手动创建 dnscache.txt

根据 AWStats 的文档:

AWStats 可以通过之前手动创建的静态 DNS 缓存文件进行反向 DNS 查找。

搜索文档以及谷歌搜索后,我只有一个问题。如何手动创建 DNS 缓存文件?有没有我还没找到的 Linux 命令可以执行此操作?这是在 Centos 5.5 机器上。

答案1

如下文所述,您可以使用任何文本编辑器创建具有格式的文本文件ipaddress resolved_hostname,如下所示:

192.168.1.11    websrv1
192.168.1.12    websrv2
192.168.1.13    websrv3

不要忘记设置DNSLookup=2


我原本期望能够根据现有信息(例如 Apache 日志)创建该文件。

当然,您可以通过从 Apache 获取 IP 地址access_log并使用一些工具(如:,,,dig... )来解析主机名,如下所示:hostresolveip

$ awk '{ print $1 }' access_log | sort | uniq | \
while read ip; do \
    if [ `dig +short -x $ip | sed 's/\(.*\)\./\1/' | wc -l` -eq 1 ]; then \
        echo -e $ip\\t$(dig +short -x $ip | sed 's/\(.*\)\./\1/') >> dnscache.txt; \
    fi; \
done

要继续更新此文件,您可以将上述命令作为 cron 作业运行,并仅过滤特定时间范围内的日志(等于 cron 间隔)。

答案2

来自此处所述的同一手册

注意:DNS 缓存文件格式为“minsince1970 ipaddress solved_hostname”或仅为“ipaddress solved_hostname”

因此,您可以通过执行以下操作来生成它:

host -t a google.com | awk '{ print $4 " " $1 }' > dnscache.txt

或者如果你有(更有可能)IP

for ip in 8.8.8.8; do 
    name=`host $ip | cut -d ' ' -f 5`
    if [ X"3(NXDOMAIN)" != X"$name" ]; then
        echo "$ip $name"
    fi
done > dnscache.txt

但实际上,您确实希望做一些比 awstats 具有更多错误检查功能并且运行速度更快的事情。

相关内容