AWStatsのドキュメントによると:
AWStatsは、以前に手動で作成された静的DNSキャッシュファイルを介して逆引きDNSルックアップを実行できます。
ドキュメントを検索するだけでなく、かなりのグーグルを検索すると、1つの質問が残ります。 DNSキャッシュファイルを手動で作成するにはどうすればよいですか?これを行うためのLinuxコマンドはまだ見つかりませんか?これはCentos5.5マシン上にあります。
下に記載されているように、ipaddress resolved_hostname
形式のテキストファイルを作成する任意のテキストエディタを使用できます。次のようになります。
192.168.1.11 websrv1
192.168.1.12 websrv2
192.168.1.13 websrv3
DNSLookup=2
を設定することを忘れないでください。
Apacheログなどの既存の情報からファイルを作成できると思っていました。
もちろん、Apacheのaccess_log
からIPアドレスを取得し、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間隔に等しい)のログのみをフィルター処理します。
ここに書かれているのと同じマニュアルから
注:DNSキャッシュファイルの形式は、「minsince1970ipaddressresolved_hostname」または「ipaddressresolved_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よりも速く動作する何かをしたいと思うでしょうが。