根据 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
... )来解析主机名,如下所示:host
resolveip
$ 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 具有更多错误检查功能并且运行速度更快的事情。